テック技報最新号へ →
AIコーディング

Supabase で作ったアプリは、公開キーだけで何が読めるかを外から確かめる

Supabase の anon キー(新しい形式では publishable キー)はブラウザに埋め込まれる公開前提のキーで、守りは RLS(行レベルセキュリティ)だけ。AI に作らせたアプリは RLS が無効・甘いまま出ることがあり、テーブルの中身や書き込みまで外から通ってしまう。公開前に、そのキーだけで何ができるかを自分で試す。

@bani24884 · 投稿 2026-02-26
#security#supabase#rls#vibe-coding

どんな時に使う?

  • バイブコーディングで Supabase を使ったアプリを公開する前、公開した後
  • テーブルを AI に足させたあと(新しいテーブルで RLS を有効にし忘れる)

手順

  1. ダッシュボードの Advisors(Security Advisor)を開き、「RLS が無効な public テーブル」などの警告をゼロにする
  2. ブラウザの開発者ツールで、アプリが送っているプロジェクト URL と公開キーを確認する(外から見えるのはこれだけ)
  3. ログインしていない状態を想定し、テーブルごとに読み取りを試す
    bash
    curl "https://<project>.supabase.co/rest/v1/<table>?select=*&limit=3" \
      -H "apikey: <公開キー>" -H "Authorization: Bearer <公開キー>"

    行が返ってきたら、そのテーブルは誰でも読める。メールアドレス・電話番号・トークンのような列が入っていないか見る

  4. 書き込み(POST / PATCH / DELETE)も、捨てて良い環境で同様に試す
  5. Storage のバケットが public になっていないか、認証の設定(メール確認の有無、サインアップを開けたままか)も確認する
  6. 直すときは、テーブルごとに enable row level security と、auth.uid() を使ったポリシーを AI に書かせ、上の確認をもう一度やる

注意点

出典

X の元の投稿を開く