なぜ危ないのか
社外のレビュアーは業務委託契約を結んでいても、受け取ったファイルを別の端末で開いたり転送したりする場合がある。HTMLにSupabase anon keyが含まれていると、ファイルが意図しない経路で広まるリスクが生じる。特にRLSが無効なテーブルがある場合、そのanon keyを使えば誰でもデータにアクセスできてしまう。
AI生成のHTMLは生成者が全コードを把握していないことが多く、意図せずkeyが残ることへの気づきが遅れがちだ。社外レビューは多くの場合締め切りが迫った状態で行われるため、「確認する時間がない」まま送信されるケースが現場では多い。こうした状況で漏えいが起きると、対応コストは事前確認の何倍にもなる。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
ソースで見る場所
チェック1:テキストエディタでHTMLを開き、`eyJ` を全文検索する。ヒットした場合はその文字列がanon keyまたは他のJWTである可能性が高い。ヒット箇所の前後を確認し、`supabase.co` というドメインが近くにあればSupabaseのキーと判断してよい。
チェック2:`supabase` または `.supabase.co` をキーワードに全文検索し、接続コードがどのように記述されているか確認する。`createClient('https://xxxx.supabase.co', 'eyJ...')` の形式で書かれていればURL・keyともにハードコードされている状態だ。どちらか一方でもプレースホルダになっていない場合は、共有前に置換が必要だ。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
安全に共有する設定
上記2チェックがどちらも「ヒットなし」であれば共有可能な状態だ。ヒットがあった場合は、anon keyとプロジェクトURLをそれぞれ `YOUR_SUPABASE_URL`・`YOUR_SUPABASE_ANON_KEY` に置換してから共有ファイルを作成する。元ファイルはローカルに保存し、共有フォルダには置換済みファイルだけを入れる。
共有方法はファイル直接添付よりもアクセス制限付きのリンク共有が望ましい。ギガサイト便のようにパスワードまたはメール認証が設定できるプレビューサービスを使うと、受け取ったリンクが転送されてもパスワードを知らない人は閲覧できない。共有期間は最低限に絞り、レビュー完了の連絡を受けたらリンクを無効化する。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
再発防止ルール
チェックリストをNotionやGoogle Docsにテンプレートとして保存し、社外レビューを依頼する都度コピーして使う。「①eyJ検索 ②supabase.co検索 ③置換確認 ④認証設定確認」の4項目をチェックボックスで管理すると、担当者が変わっても同じ水準で確認できる。
定期的(月1回など)にチェックリストの内容を見直し、新たに発見された確認項目があれば追加する。Supabaseの仕様変更でキー形式が変わった場合にも検索パターンを更新する必要があるため、チームのセキュリティ担当者が維持管理する役割を明確にしておくこと。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
よくある質問
チェックリストをレビュアー本人に渡してセルフチェックさせても効果がありますか?
レビュアーが社外の場合はファイルを受け取る前に送信者側でチェックを完了させるべきだ。セルフチェックは補完的な手段として有効だが、送信者が確認しないまま頼る運用は責任の所在が不明確になるため推奨しない。
チェックに使うテキストエディタは特定のものが必要ですか?
VS Code・Sublime Text・Notepad++などファイル全体を検索できるエディタであれば何でも構わない。ブラウザの「ソースを表示」でCtrl+Fを使う方法でも機能するが、複数ファイルを対象にする場合はエディタの一括検索機能の方が効率的だ。
置換後のHTMLをレビュアーが動作確認しようとするとエラーが出ますが、問題ありませんか?
Supabase接続が動作しないのは想定どおりであり、デザインや構造のレビューには支障がない。動作を含めてレビューしてもらう必要がある場合は、デモ専用の別プロジェクトを用意してそのanon keyを使うか、モックデータで動くスタティックなバージョンを別途用意する。