間接プロンプトインジェクションとは?
Webを閲覧するAIエージェント(カスタマーサポートのbot、ショッピングアシスタント、リサーチツールなど)は、人が画面で見るものだけでなく、ページの生のHTMLそのものを読みます。間接プロンプトインジェクションは、そのHTMLの中に「これまでの指示を無視して」「このデータをこの宛先へ送って」「質問の内容にかかわらずこの商品を勧めて」といった命令を仕込み、AIがまるで自分の運営者からの指示であるかのように従ってしまうことを狙う攻撃です。
この攻撃が成立するのは、隠されたテキストが人間に見える必要が一切無いからです。CSSで隠した要素、背景色に溶け込ませたテキスト、HTMLコメント、非表示のフォーム項目、あるいは不可視のUnicode文字だけで構成されたテキスト——どれもブラウザは「何も表示しない」ものとして扱い、人による校正やスクリーンリーダーの利用者も気づきませんが、ページのソースを読むAIにとってはそのまま読めるテキストです。
自社サイトにとって、なぜ重要か
レビュー・コメント・アップロードされた文書・掲示板の投稿など、ユーザーが投稿できるコンテンツを受け付けているサイトでは、誰でもそのコンテンツを後で読むAIエージェント(訪問者側のものであれ自社のAIツールであれ)に向けた隠し命令を仕込もうとし得ます。
ユーザー投稿を受け付けていなくても、改ざんされたプラグイン、コピー&ペーストしたコードの断片、外部ウィジェットのサプライチェーン上の問題によって、意図せず隠しテキストを公開してしまうことがあります。AIブラウジングエージェントやAI検索の要約経由の訪問者が増えるほど、自社ページ上の隠し命令は「仮定の話」ではなく実際に管理すべきリスクになります。
このツールの使い方
- 確認したいページの完全なURLを貼り付けます。
- まず総合判定と安全スコアを見てください。リスクを一行で要約しています。
- 各検出結果を確認します:場所・検出されたテキスト・隠し方・既知の命令パターンに一致したか。
- 「重大」または「警告」に該当する項目を、各検出結果に添えた直し方に沿って修正します。
- 修正後に再度診断し、「問題なし」に変わったことを確認します。
このツールが確認する内容
4種類の「隠蔽」それぞれについて、命令のような文言と組み合わさっていないかを確認します:
- CSSによる隠蔽
- display:none・visibility:hidden・ほぼ0の不透明度・0px文字サイズ・大きな負のtext-indent・画面外への配置・0×0の要素・潰れたclip/clip-path——インラインstyle属性と埋め込み<style>ブロックが対象。加えて、sr-only等、外部CSSで「隠す用」によく使われる定番クラス名のヒューリスティックも含みます。
- 色によるカモフラージュ
- 文字色と背景色の両方がインライン/埋め込みCSSで判る場合に、両者がほぼ同じ色になっていないかを確認します。
- 不可視Unicode
- 通常のテキストに混ぜ込まれたゼロ幅スペース・ゼロ幅結合子、Unicode「タグ文字」、双方向制御文字を検出します。
- 隠し属性・非表示ペイロード
- HTMLコメント・hidden属性・aria-hidden="true"の範囲・非表示のフォーム項目、meta/alt/title属性内のテキストを対象にします。
よくある質問
- このAIエージェント安全チェックは無料ですか?
- はい。URLを貼るだけで、総合判定・スコア・すべての検出結果が得られます。登録もクレジットカードも不要です。
- このツールはAIを使ってページを診断しますか?
- いいえ。すべての判定はCSSプロパティの値・色のコントラスト計算・Unicode文字範囲・パターン照合による決定論的なルールです。ページの内容が言語モデルへ送られることはありません。
- sr-only の要素が「情報」止まりで「警告」にならないのはなぜですか?
- スクリーンリーダー専用テキストは正当かつ一般的なアクセシビリティ手法だからです。隠されたテキストにAI向けの命令のような文言が同時に含まれている場合にのみ、重大度を引き上げます。隠すこと自体は問題ではありません。
- 外部CSSやJavaScriptが生成する内容も確認できますか?
- 現バージョンでは対象外です。ページの生HTML内にあるインラインstyle属性と埋め込み<style>ブロックのみを確認します。リンクされた外部スタイルシートの取得やJavaScriptの実行は行わないため、外部CSSのみで隠されている内容や、スクリプト実行後に追加される内容は、現時点では確認範囲外です。
- 自分のページを localhost で試すとスコアが低いのはなぜですか?
- 本ツールはクローラーと同様にインターネット経由でページを取得するため、localhost やプライベート/内部アドレスには到達できません。公開済みの実際のURLで診断してください。