公開前セキュリティ・チェックリスト

AI で作ったアプリ・Supabase アプリを安全に公開するための実用チェックリスト。shipscan はこの多くを自動化します——URL を貼ると、誰がどのデータに届くかを到達グラフで確認できます。

無料で検査する →
  1. すべてのテーブルで RLS を有効に

    RLS が無い(またはポリシーが緩い)と、匿名の訪問者が公開 API から全データを読めます。

    shipscan が自動で検査
  2. RLS ポリシーを所有者で絞る

    using (true) のようなポリシーだと、ログイン済みユーザーが他人のデータを読めます。auth.uid() = user_id に。

    shipscan が自動で検査
  3. service_role キーをクライアントに出さない

    service_role は RLS を無視します。ブラウザや公開リポジトリに出ると、誰でも全データにアクセスできます。

    shipscan が自動で検査
  4. 秘密をコミットしない

    リポジトリ内の鍵(コミット済み .env 等)は誰でも読め、数分で自動ボットに収集されます。

    shipscan が自動で検査
  5. /.env や /.git を公開しない

    公開状態だと、秘密とソース履歴がそのまま漏れます。

    shipscan が自動で検査
  6. 本番で source map を出さない

    公開された .js.map があると、難読化していても誰でも元のソースコードを復元できます。

    shipscan が自動で検査
  7. 初期 HTML に機微データを載せない

    __NEXT_DATA__ やサーバ描画の props に埋めたデータは、ログインなしで誰でも読めます。

    shipscan が自動で検査
  8. RPC / SECURITY DEFINER 関数を絞る

    ログインなしで呼べる関数(や定義者権限で動く関数)は、権限チェックが無いと RLS を迂回します。

    shipscan が自動で検査
  9. Storage バケットを不用意に公開しない

    公開バケットは、URL を知る誰もが全ファイルを読めます。

    shipscan が自動で検査
  10. 既知の脆弱性がある依存ライブラリを更新

    lockfile にある既知の脆弱性(CVE)は簡単に調べられ、悪用されやすいです。

    shipscan が自動で検査
  11. HTTPS+セキュリティヘッダで配信

    HTTPS / HSTS / CSP が無いと、通信やページが改ざんされやすくなります。

    shipscan が自動で検査
  12. 自動チェックでは見えない箇所を人がレビュー

    入力処理(インジェクション)・業務ロジック・サーバ内部の認可は、外部の自動チェックでは見えません。別途レビューを。