---
title: "Supabase public bucket: vem kan läsa dina filer"
description: "Vad en publik Supabase Storage-bucket ändrar och inte ändrar, vad mitt lokala test gav för publik och privat bucket och när du väljer vilken."
url: "https://madsalt.tech/sv/notes/supabase-public-bucket/"
author: "Denys Zaichenko"
author_url: "https://madsalt.tech/sv/about/"
language: "sv"
published: 2026-11-04
---

# Supabase public bucket: vem kan läsa dina filer

Kort sagt

En publik bucket serverar varje fil i den till alla som har URL:en, utan nyckel och utan inloggning: dina storage-policyer tillfrågas inte vid nedladdning. På min lokala stack gav samma testfil `200` med innehållet från en publik bucket och `400` från en privat. Uppladdning, borttagning och flytt går fortfarande via policyer. Använd publika buckets för filer som är publika till sin natur, som avatarer och artikelbilder, och privata buckets med signerade URL:er för allt annat.

Min gratis [Supabase-säkerhetskontroll](https://madsalt.tech/sv/tools/supabase-security-check/) har två regler om buckets: "Publika storage-buckets" listar dem så att du kan bekräfta att var och en ska vara publik, och "Publika buckets utan uppladdningsgränser" flaggar publika buckets utan gräns för storlek eller filtyp. Här är vad den publika flaggan faktiskt ändrar.

## Vad betyder en publik bucket i Supabase?

Supabases [guide om buckets](https://supabase.com/docs/guides/storage/buckets/fundamentals) definierar två åtkomstmodeller. I en privat bucket går varje operation, nedladdningar inkluderade, via RLS-policyer på `storage.objects`; en fil läses med användarens token eller en signerad URL som löper ut. I en publik bucket kringgår hämtning och servering av filer åtkomstkontrollen, så alla med URL:en kan läsa filen. Åtkomstkontrollen gäller fortfarande vid uppladdning, borttagning, flytt och kopiering.

Buckets är privata som standard. En bucket blir publik när någon kryssar i rutan i Dashboard eller skapar den med `public: true`, en vanlig genväg när en bild inte laddas.

## Vad gav varje bucket i mitt test?

På en lokal Supabase-stack (CLI 2.109.1) skapade jag en publik och en privat bucket, laddade upp samma lilla textfil till båda med secret key och begärde den sedan utan någon nyckel, som en främling med länken skulle göra:

![Samma fil, begärd utan nyckel. Lokal Supabase Storage, en publik och en privat bucket. Publik bucket: Utan nyckel → publik bucket → 200, fil skickad; Privat bucket: Utan nyckel → privat bucket → 400, hittades inte.](https://madsalt.tech/charts/sv/supabase-public-bucket.svg)

*Min reproduktion på en lokal Supabase-stack, 23 oktober 2026.*

| Förfrågan om `2026/invoice-001.txt`                        | Publik bucket          | Privat bucket             |
| ---------------------------------------------------------- | ---------------------- | ------------------------- |
| `/storage/v1/object/public/…`, ingen nyckel                | `200`, filens innehåll | `400`, "Bucket not found" |
| `/storage/v1/object/authenticated/…`, bara publishable key | `200`                  | `400`                     |

Den privata bucketen svarar som om den inte fanns, vilket är det du vill ha. Den publika lämnar ut filen till alla som kan gissa eller hitta sökvägen.

## Varför spelar URL:en så stor roll?

En publik fil är bara så hemlig som sin sökväg. Sökvägar är ofta förutsägbara: ett användar-id, ett datum, ett fakturanummer. De läcker också via sidkälla, delade länkar, webbläsarhistorik och loggar. En faktura, en passkopia eller ett signerat avtal i en publik bucket är i praktiken publicerat.

## Hur väljer och fixar du det?

- **Publik bucket:** filer avsedda för alla, som avatarer, produktbilder och bloggbilder. Sätt en gräns för filstorlek och tillåtna MIME-typer på bucketen, så att den publika uppladdningsväg som dina policyer tillåter inte kan användas för att hosta något annat.
- **Privat bucket:** dokument, exporter, fakturor, allt personligt. Ladda ner med användarens session, eller skapa en signerad URL som löper ut.

Så ser du dina buckets och deras gränser:

```sql
select id, public, file_size_limit, allowed_mime_types
from storage.buckets
order by public desc, id;
```

En privat bucket behöver också policyer på `storage.objects`, oftast med en kontroll att sökvägens första mapp är användarens eller företagets id. Efter att du flyttat ett projekt: räkna dessa policyer. I en app misslyckades varje uppladdning eftersom policy-migreringen aldrig kördes, vilket jag skrev om i min [säkerhetschecklista för Lovable-appar](https://madsalt.tech/sv/blog/lovable-app-security-checklist/). Vad mer publishable key kan nå finns i [Supabase anon key vs service role key](https://madsalt.tech/sv/blog/supabase-anon-key-vs-service-role-key/).
