HTML共有前の3分チェック:APIキー・個人情報・社内URLを探す
AI生成HTMLやレポートをリンクにする前に、ソース、非表示データ、ローカルパスからAPIキーと個人情報を探し、漏えい時に対応する順序をまとめます。
HTMLをリンクにする前は、表示画面だけでなくsource全体を確認します。comment、 hidden element、JavaScript object、sample request headerに入ったAPI keyや個人情報も、 ファイルの一部ならそのまま公開されます。passwordと短いexpiryは補助境界であり、 公開できない値を安全な値へ変えるものではありません。
1. credentialらしい文字列を検索する
editorの全体検索で次の語とpatternから確認します。
api_key
apikey
secret
token
password
Authorization:
Bearer
BEGIN PRIVATE KEY
sk-
ghp_
AIza
これは完全なdetectorではありません。利用するservice固有のprefixとenvironment variable名を追加してください。GitHub secret scanningの文書 は、対応するsecret patternと一般的なpassword検出の違いを説明しています。 自動scanが通っても、機密値が一つもない証明にはなりません。
OpenAI API keyの安全ガイド が示すように、browserへ渡るclient-side codeへAPI keyを置かないことが基本です。 公開demoからAPIを呼ぶ必要があるなら、keyをHTMLへ入れず、認証と使用量制限を持つ backendを別に設計します。
2. 画面に見えないHTMLも読む
次の場所は表示されなくても共有されます。
<!-- comment -->内のmemoと一時datadisplay:none、hidden、閉じたdialog内の内容<script type="application/json">に入れたraw data- JavaScript variable、error message、sample requestとresponse
data-*attribute、source map URL、analytics ID- imageの
alt、linkのhref、formのdefault value
開発中の「あとで消す」情報は共有用copyから実際に削除します。CSSで隠すことは 削除ではありません。
3. 人や組織を特定する情報を確認する
secretでなくても公開範囲を決める必要がある情報があります。
- 氏名、個人email、電話番号、住所、account ID
- 顧客名、project名、契約金額、社内schedule
- 従業員、応募者、患者、userの実data
- 社内hostname、private IP、ticket URL、repository path
/Users/name/、C:\Users\name\のようなlocal path- URL queryやfragmentに残ったtokenとdocument ID
例は実dataを少し隠すのではなく、公開用に作ったsynthetic dataへ置き換えます。 reserved example domainやdocumentation IP rangeを使い、実値が混ざっていないか 再確認します。
4. 共有専用のcopyを作る
原本のcopyを次の順で小さくします。
- sensitiveなsectionとcommentを削除する。
- 実dataを最小限のsynthetic exampleへ置き換える。
- reviewに不要なscript、network request、analyticsを外す。
- editorの全体検索をもう一度実行する。
- fileをtextとして開き、最初から最後まで読む。
- share URLをprivate windowで開き、sourceとnetworkを確認する。
繰り返すteamはsecret scannerをCIやpre-commitへ追加できます。ただし既知のtoken patternに一致しない個人情報とbusiness contextは人が確認します。
5. すでに公開した場合は削除だけで終わらせない
API keyやtokenが漏れた可能性がある場合は次の順で対応します。
- privateなmanagement linkからshareをすぐ削除する。
- provider側でcredentialをrevokeまたはrotateする。
- access、usage、予期しないbillingを確認する。
- 安全なcopyを新しいURLで公開する。
- 受取人へ旧URLとcredentialを交換したことを伝える。
share削除はこれからのaccessを止めます。保存済みcopyやcredentialの効力までは 取り消せません。OWASP Secrets Management guidance に従い、rotationとrevocationを一緒に行います。
確認済みのcopyだけをHTMLからURLへ変換してください。さらに accessを絞るならpassword・expiry・noindexの違い を確認し、source整理の代わりには使わないでください。