Supabase · Storage

¿Cómo subir archivos privados con Storage y RLS?

IndiePack··8 min lectura

Para subir archivos privados en Next.js con Supabase Storage, crea un bucket no público, organiza cada objeto bajo el identificador del usuario u organización y aplica políticas RLS de lectura, inserción y borrado. Sirve las descargas mediante URLs firmadas de corta duración después de resolver una sesión válida.

Separación práctica: Storage conserva el binario; una ruta segura y, cuando haga falta, una tabla de metadatos describen propietario, nombre visible y estado.

Índice

  1. ¿Cómo se diseña la ruta del objeto?
  2. ¿Cuál es la forma rápida con IndiePack?
  3. ¿Cómo se valida la subida?
  4. ¿Cómo se entrega el archivo?
  5. ¿Qué pruebas cierran el flujo?

¿Cómo se diseña la ruta para identificar al propietario?

La ruta debe permitir que una política relacione el primer segmento con el usuario autenticado o con una organización a la que pertenece. Añade después un identificador generado por el servidor y conserva el nombre original como metadato; así evitas colisiones y no conviertes texto del usuario en una ruta confiable.

Si el archivo pertenece a un equipo, no confíes en que el cliente escriba cualquier organización. Comprueba la membresía en RLS y mantén una clave foránea en una tabla de documentos cuando necesites título, estado o auditoría.

¿Cuál es la forma rápida: empezar con IndiePack?

La forma rápida es construir sobre IndiePack, que combina Next.js 15, Supabase, autenticación, Storage y reglas de seguridad dentro del recorrido web. Esa base te deja centrarte en los tipos de archivo y permisos concretos de tu SaaS.

Ver IndiePackVer precio

¿Cómo se valida una subida antes de guardarla?

La subida se valida comprobando sesión, tamaño permitido, tipo esperado y ruta autorizada antes de aceptar el objeto. El tipo declarado por el navegador es una señal, no una garantía; para contenido sensible debes verificarlo de acuerdo con el riesgo de tu aplicación.

No expongas una clave de servicio para facilitar el proceso. El cliente autenticado puede subir bajo políticas acotadas, o una acción de servidor puede hacerlo después de validar. La guía de Supabase Auth y RLS con Next.js explica la base de sesión que sostiene este flujo.

¿Cómo se entrega un archivo sin volver público el bucket?

El archivo se entrega generando una URL firmada con una caducidad corta después de comprobar que el solicitante puede leerlo. No guardes esa URL como si fuera permanente: genera una nueva cuando el usuario abra la descarga.

Para documentos especialmente sensibles, registra el acceso y evita incluir información privada en el nombre del objeto. Una página de Next.js puede resolver la autorización en el servidor y redirigir a la URL temporal sin revelar credenciales.

¿Qué pruebas confirman que Storage está bien cerrado?

Prueba subida, lectura, sustitución y borrado con dos usuarios distintos, además de un usuario sin sesión. Intenta adivinar una ruta válida ajena y reutiliza una URL firmada después de que caduque; ambas acciones deben fallar.

Comprueba también límites de tamaño, extensiones inesperadas y nombres repetidos. IndiePack aporta autenticación, Storage y reglas de seguridad como base, pero cada producto debe ajustar y verificar sus políticas según los documentos que almacena.