HTML共有前の3分チェック:APIキー・個人情報・社内URLを探す

AI生成HTMLやレポートをリンクにする前に、ソース、非表示データ、ローカルパスからAPIキーと個人情報を探し、漏えい時に対応する順序をまとめます。

HTML sourceからAPI key、個人情報、社内URLを削除してから共有する確認手順

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と一時data
  • display:nonehidden、閉じた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を次の順で小さくします。

  1. sensitiveなsectionとcommentを削除する。
  2. 実dataを最小限のsynthetic exampleへ置き換える。
  3. reviewに不要なscript、network request、analyticsを外す。
  4. editorの全体検索をもう一度実行する。
  5. fileをtextとして開き、最初から最後まで読む。
  6. share URLをprivate windowで開き、sourceとnetworkを確認する。

繰り返すteamはsecret scannerをCIやpre-commitへ追加できます。ただし既知のtoken patternに一致しない個人情報とbusiness contextは人が確認します。

5. すでに公開した場合は削除だけで終わらせない

API keyやtokenが漏れた可能性がある場合は次の順で対応します。

  1. privateなmanagement linkからshareをすぐ削除する。
  2. provider側でcredentialをrevokeまたはrotateする。
  3. access、usage、予期しないbillingを確認する。
  4. 安全なcopyを新しいURLで公開する。
  5. 受取人へ旧URLとcredentialを交換したことを伝える。

share削除はこれからのaccessを止めます。保存済みcopyやcredentialの効力までは 取り消せません。OWASP Secrets Management guidance に従い、rotationとrevocationを一緒に行います。

確認済みのcopyだけをHTMLからURLへ変換してください。さらに accessを絞るならpassword・expiry・noindexの違い を確認し、source整理の代わりには使わないでください。

このページの目次