【くりっくじゃっきんぐ】
クリックジャッキング とは?
💡 見えないボタンを重ねて「意図しないクリック」をさせる罠
📌 このページのポイント
- 透明なiframeで正規サイトを重ねて表示し、ユーザーのクリックを別の操作に誘導する
- SNSの「いいね」ボタンや購入ボタンなどが気づかず押されてしまう
- X-Frame-Optionsヘッダやframe-ancestorsディレクティブ(CSP)で防御できる
- likejacking(いいねジャッキング)はクリックジャッキングの一種
クリックジャッキングってどういう仕組み?
たとえば「無料プレゼントはこちら」というボタンがあるページを表示するんだけど、その上に透明にしたiframeで銀行の送金ページを重ねて表示するんだ。ユーザーが「プレゼント」ボタンを押したつもりが、実は送金ボタンを押してしまう、という仕組みだよ。
透明ってどういうこと?見えないの?
CSSのopacity:0で完全に透明にできるんだ。見た目は下のページしか見えないけど、クリックは上に重ねた透明なページに対して行われる。ユーザーからは全く見えないから、何が起きたか気づかないんだよ。
どうやって防ぐの?
サーバ側でX-Frame-Optionsヘッダを設定して、自分のサイトがiframeに埋め込まれるのを禁止するのが基本だよ。「DENY」で完全拒否、「SAMEORIGIN」で同一オリジンのみ許可にできる。より新しい方法として、CSPのframe-ancestorsディレクティブでも制御できるよ。
ユーザー側でできることはある?
まとめ:ざっくりこれだけ覚えればOK!
「クリックジャッキング」って出てきたら「透明なレイヤーで意図しないクリック操作をさせる攻撃だな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Clickjacking」 = クリックの乗っ取り
💬 click(クリック)+ hijacking(乗っ取り)の造語。UI redress attackとも呼ばれるよ