Hello there, ('ω')ノ
🕵️♂️ クリックジャッキングとは?
クリックジャッキング(Clickjacking)とは、ユーザーに別の目的のボタンやリンクをクリックさせるように仕向けるインターフェースベースの攻撃です。
表面的には、ユーザーは通常のウェブページで何かをクリックしているつもりでも、実際には別の隠されたサイト上の操作を実行してしまいます。
💣 攻撃の仕組み
攻撃の例:
- ユーザーは「賞品が当たる」ボタンがある偽サイト(デコイサイト)を開く。
- 実はそのボタンの背後には透明なiframeで別のウェブサイトが読み込まれている。
- iframe内の見えない「支払いボタン」や「いいねボタン」がユーザーのクリックに反応する。
- ユーザーは気づかないうちに支払いを実行したり、SNSで他人をフォローしたりしてしまう。
🔍 CSRFとの違い
項目 | クリックジャッキング | CSRF |
---|---|---|
ユーザーの操作が必要か | 必要(クリックなど) | 不要(自動送信) |
攻撃方法 | 隠しiframeなどのUIの重ね合わせ | 偽造されたリクエスト送信 |
CSRFトークンの有無 | 通常通り使われる | トークンで防御可能 |
💡 クリックジャッキングは、「正規のセッション」を使って、正規のサイト内で実行されるため、CSRFトークンでは防げません。
🔐 対策方法
X-Frame-Optionsヘッダーを使用
DENY
:全てのiframe埋め込みを拒否SAMEORIGIN
:同一オリジンからの埋め込みのみ許可
- Content Security Policy (CSP) を使用してフレームの埋め込み制御
Content-Security-Policy: frame-ancestors 'self'
重要な操作にユーザーの明確な確認を要求
- 二段階確認やCAPTCHAの導入など
🎯 まとめ
- クリックジャッキングは見えないUIを使った詐欺的なクリック誘導です。
- CSRFでは防げないため、専用の対策が必要です。
X-Frame-Options
やCSPヘッダーによる埋め込み制限が効果的な対策です。
☠️ 本質的にはユーザーの視覚と行動を騙す攻撃なので、セキュリティヘッダーやUI設計が鍵となります。
Best regards, (^^ゞ