クリックジャッキングとは
クリックジャッキングは、攻撃者が用意したページの上に、標的となるサイトのページを透明な状態で重ねて表示し、利用者に気づかれないまま、ボタンをクリックさせる攻撃です。利用者は、見えているボタンを押したつもりでも、実際には透明な標的サイトのボタンを押しています。詳しくはOWASPの解説を参照してください。
起きること
- ログイン中のサービスで、意図しない投稿、送金、設定の変更が行われる
- SNSの「いいね」やフォローが、本人の意思とは無関係に実行される
- カメラやマイクなどの許可を、気づかないうちに与えてしまう
仕組み
- 攻撃者が、標的サイトのページを
iframeで読み込む自分のページを作る。 - iframeを透明にして、魅力的なボタンやゲームの画面の上に重ねる。
- 利用者が、見えているボタンをクリックすると、その下の標的サイトの操作が実行される。
標的サイトが、他のサイトのiframeの中に表示されることを許していると、この攻撃が成り立ちます。
対策
自分のページを、他のサイトの枠の中に表示させない設定を、HTTPヘッダーで送ります。
- X-Frame-Options:
DENY(どこからの埋め込みも禁止)またはSAMEORIGIN(同じオリジンだけ許可)を指定します。 - CSPの frame-ancestors:
frame-ancestors 'none'やframe-ancestors 'self'のように指定します。新しい方式で、複数の取得元を許可することもできます。
古いブラウザへの配慮から、両方を併記する方法があります。どちらも、HTMLの meta タグでは効かず、HTTPヘッダーで送る必要があります。
Content-Security-Policy: frame-ancestors 'self'
X-Frame-Options: SAMEORIGIN
JavaScriptでiframe内かどうかを調べて抜け出す方法(フレームバスティング)は、回避される場合があるため、ヘッダーによる対策を基本にしてください。
確認方法
次のコマンドで、応答ヘッダーを確認できます。
curl -s -D - -o /dev/null https://example.com/ | grep -i -E '^(x-frame-options|content-security-policy)'
何も表示されなければ、どちらも設定されていません。ブラウザの開発者ツール(F12)の「ネットワーク」タブでも確認できます。
Webサイト セキュリティチェッカーで確認する
Webサイト セキュリティチェッカーは、URLを入力すると、X-Frame-Optionsと、CSPの frame-ancestors の有無を診断します。設定が無い場合は、指摘と、設定の例が表示されます。
関連用語
関連する用語
サイトの設定を無料で確認する
サイトのURLを入力するだけで、クリックジャッキング などの設定状況を診断できます。Webサイト セキュリティチェッカー「Security Checker X」は、登録なしで使えます。









