なぜ危ないのか
AIへ「ログインページ」「パスワードリセット画面」「セキュリティ警告バナー」の生成を依頼すると、学習データにあるフィッシングサイトのUIパターンを模倣した文言が出てくることがあります。制作者はデザインの出来映えを確認して満足し、文言をそのまま使ってしまうケースが多いです。
フィッシング的文言はスパムフィルターだけでなく、受信者の心理的な不信感も生みます。一度「この会社は怪しいものを送ってくる」という印象を持たれると、次回以降の正式なメール・URLも疑われるリスクがあります。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
ソースで見る場所
HTMLのbodyタグ内テキストを一括で抽出してフィッシングキーワードスキャンを実施します。Pythonであれば`from bs4 import BeautifulSoup`でテキストを取り出し、キーワードリストと照合するスクリプトを10行程度で書けます。定期的に共有するHTMLがある場合はCIに組み込んでおくと自動化できます。
aタグのhref属性を全件抽出し、外部URLであれかつアンカーテキストが「こちら」「クリック」「今すぐ」のような誘導表現である組み合わせを確認します。このパターンがスパムフィルターで最も高スコアになりやすいため、優先的に修正します。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
安全に共有する設定
スキャン済みのHTMLをギガサイト便で共有する場合、共有URL作成時に「会社ドメイン認証」オプションを設定すると、指定ドメインのメールアドレスでログインした人だけが閲覧できます。フィッシング懸念のある文言が仮に残っていても、関係者以外が見るリスクを大幅に下げられます。
共有メッセージに「フィッシング文言スキャン済み(〇〇件ヒットなし)」と記載すると、受信者のセキュリティ担当者がエスカレーションを判断する際の根拠として機能します。スキャン結果を明示することで、信頼性の高い共有プロセスを対外的にアピールできます。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
再発防止ルール
AIへのプロンプトに「警告・エラー・通知系のコンポーネントの文言はLorem ipsumまたは『通知テキスト』等のプレースホルダとすること。緊急性を煽る言葉・脅迫的な表現は絶対に使わないこと」と追記します。この制約を含むプロンプトを社内で標準化し、コピペ可能なスニペットとして共有します。
生成されたHTMLを初めて開いたときに、デザインより先に文言を一通り音読するレビューを習慣化します。音読することで画面に慣れた目では気づかない違和感に気づきやすくなります。チームレビューでは担当者以外が声に出して読む役を担うと効果的です。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
よくある質問
BeautifulSoupを使ったスキャンスクリプトの大まかな構成を教えてください。
HTMLファイルを読み込んでget_text()で全テキストを抽出し、キーワードリストでin検索します。ヒットした場合はキーワードと行番号を出力し、0件なら'クリア'と表示するだけのシンプルな構成で十分です。
プロンプトで制約をかけてもAIが無視することはありますか?
稀にあります。制約を守るよう再度プロンプトで指示するか、生成後に必ずスキャンを実施して取りこぼしを検出する二段構えが確実です。プロンプト単体への過信は危険です。
スキャンのキーワードリストはどこから入手できますか?
IPAのフィッシング対策ガイドや、Anti-Phishing Working Group(APWG)のレポートに典型的な文言パターンが掲載されています。自社で過去に問題となった文言を随時追加してカスタマイズしてください。