FixVibe

// docs / baas security / supabase storage

Supabase storage bucket jark'aqaña checklist: 22 items

Supabase Storage mä k'akhu wrapper S3-compatible bucket ukat pachpa Row-Level Security modelo base de datus ukamp. Ukax tablanak influencianak storage-específicas pä kimsa IA codificación yänakax uploads catayaña uñstayi. Aka checklist 22 items phisqa secciones: bucket configuración, RLS políticas, upload validación, firmadas URLs, ukat operacional limpia. Sapa qhana mä 15 minutos manqhan verificable.

Sapa aksa item utt'ataw. RLS mecánica fundamento Supabase RLS escáner ulla. Storage jak'an llawi-qhanstayata clase, Supabase service role llawi JavaScript ukan qhanstayata ulla.

Bucket configuración

Wakisita defectos ukamp qalltaña. Mä mala configurada bucket archivunak jaltayañkani RLS chiqäkpan ukasa.

  1. Sapa bucket defecto privadot uchaña. Supabase Dashboard → Storage → Buckets ukan, Público bucket toggle apaya kun explícito amtawi jan utjkpan (marketing assets, público avatars jan PII). Público buckets RLS ullañ operación saltayi — khitis bucket suti yatkaspa list ukat download lurpan.
  2. Mä jach'a archivu jiwit'awi sapa bucket uchaña. Dashboard → Bucket configuración → Archivu jiwit'awi. 50 MB mä wakisita defecto usuariu uploads ukatakwa; jach'aru deliberadamente video / jach'a-archivu apnaqaña. Jan jiwit'awini, mä sapa nuwa upload storage cuota jan ukax phaxsi ancho banda jist'antayaspa.
  3. Permitita MIME tipos sapa bucket ukan jark'aqaña. Permitita MIME tipos lista — explícita permitilista, janit bloqueolista. image/jpeg, image/png, image/webp mä imagen-ukak buckets ukataki. Janipuni text/html, application/javascript, jan ukax image/svg+xml mä usuariu-contenido bucket ukan permitiña — apnaqi navegadoran apkat firmada URL ukamp.
  4. Mä bucket sapa contenido tipo uchaña, janit mä compartit bucket. Sapa-bucket configuración (jiwit'awi, MIME tipos, RLS políticas) granularidad atxiri. Mä user-avatars bucket, mä document-uploads bucket, ukat mä public-assets bucket mä mezcla bucket ukat juk'amp jist'antañataki suma.
  5. CORS configuración verifikaña frontend uploads ukan. Usuarionakax mä firmada URL ukar navegadoramat directo apkatkpan, bucket CORS production origen apkatañapa. * público buckets ukatak phuqayatawa — janipuni usuariu PII apkatat buckets ukan.

RLS políticas storage.objects ukan

Supabase Storage archivu metadatos storage.objects tablan apsuyi. RLS uka tablan kun ullaña, upload, update, jan ukax delete archivunak. Jan RLS-ni, bucket público/privado bandera mä ukak jark'aqama.

  1. RLS storage.objects ukan utt'ata confirmaña. SELECT rowsecurity FROM pg_tables WHERE schemaname = 'storage' AND tablename = 'objects'; true kuti munay. Supabase machaq proyectoman defecto utt'ayi; verifikaña jan deshabilitatakipan.
  2. SELECT política auth.uid() ukar ñiq'iyatax qillqaña privado buckets ukataki. CREATE POLICY "users_read_own_files" ON storage.objects FOR SELECT USING (auth.uid()::text = (storage.foldername(name))[1]);. Convención [user-id]/[filename] ukar archivunak apsuyaña ukat storage.foldername() apnaqaña rutat dueño apsuñataki.
  3. INSERT política qillqaña pachpa rutax forzayi. CREATE POLICY "users_upload_own" ON storage.objects FOR INSERT WITH CHECK (auth.uid()::text = (storage.foldername(name))[1]);. Jan WITH CHECK-ni, mä autenticado usuariu yaqha usuariu carpetaru uploadayaspa.
  4. UPDATE ukat DELETE políticanak uchaña aplicaciónamax archivu mayachawi jan ukax armtañ catkpan. Sapa comando munay mä política. DELETE armkañax autenticado usuariunak jan propio archivunakap apsuñ atki; UPDATE armkañax archivu sobrescritura ch'ukt jan irnaqki.
  5. Cruce-usuariu acceso probaña pä navegador sesionampi. Usuariu A jamasin sign in, mä archivu upload, ruta copiya. Usuariu B yaqha navegadoran sign in, REST API ukat archivu apsuyaña tantiyaña. Respuestax 403 jan ukax 404 munay, janipuni 200.
sql
-- Confirm RLS on storage.objects
SELECT rowsecurity
FROM   pg_tables
WHERE  schemaname = 'storage' AND tablename = 'objects';

-- SELECT policy: scope reads to the owning user's folder.
CREATE POLICY "users_read_own_files"
  ON storage.objects
  FOR SELECT
  USING (auth.uid()::text = (storage.foldername(name))[1]);

-- INSERT policy: enforce the [user-id]/[filename] path convention.
CREATE POLICY "users_upload_own"
  ON storage.objects
  FOR INSERT
  WITH CHECK (auth.uid()::text = (storage.foldername(name))[1]);

Upload validación

Sapa upload servidor lado validi, bucket MIME ukat jiwit'awi restricciones utjkpan ukasa. IA codificación yänakax cliente-ukak validación defectu generi; janipun walt'ki.

  1. MIME tipo wasitat servidor-lado uñakipt'aña archivun actual byteat, janit Content-Type cabeceratax. Mä biblioteca apnaqaña file-type (Node) jan ukax magic-byte huellanaka apnaqi. Atacante Content-Type: image/jpeg arsuyaspa mä archivun verdaderwa polyglot HTML / JavaScript carga ukäkipan.
  2. EXIF metadatos uploadat imágenes ukat apsuyaña. EXIF GPS coordenadas, dispositivo número serial, ukat timestamps apkatkaspa. sharp .withMetadata(false) jan ukax exif-parser apnaqaña apsuñataki imantañ nayratak.
  3. SVGs script tags jan ukax onload manejador apkatkir niegaña. SVG XML — ukat IA generata aplicacionax SVG uploads "mä imagen sasin" inakir permitipxi. DOMPurify servidor lado apnaqaña jan ukax SVG uploads tukuyat niegaña.
  4. Determinista, jan tantiyañiri archivu suti apnaqaña. Janipuni original archivu suti imañ. Mä UUID jan ukax mä archivu contenido hash apnaqaña. Original archivu sutinakax jaltapxi ("passport_scan_2024_01_15.jpg") ukat tantiyañiri sutinakax enumeración yatiyi.

Firmadas URLs

Firmadas URLs ukax clientenakax privado buckets ukar accesopxi. Caducidad, bucket alcance, ukat kun registratax munisi.

  1. Firmada-URL caducidad defectux 1 hora jan ukax juk'amp pisin. Supabase JS SDK ukan createSignedUrl(path, expiresIn) segundos apsuyi. Janipuni 31536000 (mä mara) jamuq apnaqaña — URL mä permanente semi-público enlace tukuyani.
  2. Janipuni firmadas URLs base de datusam ukan apsuyaña. Sapa peticionan jacha apsuyaña servidor lado. Mä apsut firmada URL 1-mara caducidaniri base de datus dump ukat jaltapxix urak'inawi acceso churi.
  3. Firmada-URL generación registraña, janit archivu uploads ukak. Mä compromiso qhipan amuyaspa, khitis kawkïr URL kawkïrkamax generki yatiñam. auth.uid() + bucket + objeto ruta + tiempo registraña.
  4. downloadAs opción apnaqaña usuariu-uploadayat archivunak churaña. createSignedUrl(path, expiresIn, { download: '.jpg' })Content-Disposition: attachment cabecera forzayi archivu downloadañataki janit renderizañataki — HTML / SVG / HTML-en-PDF ejecución clase saltayi.

Operacional limpia

Storage configuración pacha apar mayjt'i. Aka pusi operacional itemnakax superficie ch'amjañataki.

  1. Buckets trimestralment auditi. Dashboard → Storage → Buckets. Público/privado estado ukat MIME-tipo listas aplicación amuyki ukamp confirmaña. Buckets "temporariamente" lurkir permanente apsuyatasi khitis apaqkañpan.
  2. Anónimo list operaciones uñakipt'aña. Storage logs (Dashboard → Logs → Storage) LIST peticionanak registri. Mä punto anónimo list peticionanaka mä privado bucket contra khitis ankaxat sondeapxki sañ muniwa.
  3. Retención política mä efímerataki uploads uchaña. Temp buckets (imagen preview, draft uploads) 24-72 horat qhipan auto-armtañapa mä yatxat función ukamp. Indefinida retención GDPR / CCPA datos minimisación obligacionarux mä responsabilidadawa.
  4. Mä FixVibe escaneo phaxsisat apnaqaña. baas.supabase-storage-public verificación buckets anónimo GET + LIST ukar arsutkir sondeyi. Machaq buckets uchatasi; jach'a uñakipawi mayjt'i — sapa pacha escaneo deriva katu.

Qhipa lurawinaka

Mä FixVibe escaneo production URL ukar apnaqaña — anónimo storage listings baas.supabase-storage-public ukan apsuyi. Aka checklist Supabase RLS escáner tabla layer ukat Supabase service role llawi JavaScript ukan qhanstayata llawi-qhanstayata adyacencia. Storage jan walt'awi yaqha BaaS proveedornakan, BaaS jan walt'awi escáner ulla.

// baas superficie escaneaña

Yaqha jaqix jikxatkañkam jist'arata tabla jikxataña.

Mä production URL apsuma. FixVibe aplicacionax kawkïr BaaS proveedornakampis arsi uka enumeri, jupanakan endpoints público huellanakap luri ukat kun mä cliente jan autenticado ulläspa jan ukax qillqaspa uka informi. Inakiwa, jan instalañani, jan tarjetani.

  • Inaki plan — 3 escaneo phaxsin, jan tarjetampi registro.
  • BaaS huellanakax pasivut — jan dominio verificación munki.
  • Supabase, Firebase, Clerk, Auth0, Appwrite ukat juk'amp.
  • IA askichañataki prompts sapa jikxatäwina — Cursor / Claude Code ukan pegaña.
Supabase storage bucket jark'aqaña checklist: 22 items — Docs · FixVibe