【くりっくじゃっきんぐ】

クリックジャッキング とは?

💡 見えないボタンを重ねて「意図しないクリック」をさせる罠
📌 このページのポイント
クリックジャッキングの仕組み 正規ページ(見える部分) 無料プレゼント! ユーザーが見ている画面 ここをクリック ▼ 透明iframe(opacity: 0) 送金を実行する ① ユーザーのクリック 実際に起きること ユーザーは「無料プレゼント」を クリックしたつもりだが... ② 透明iframe内のボタンが実行される 対策 X-Frame-Options / CSP frame-ancestors レイヤー構造: 透明iframe(上) 正規ページ(下)
クリックジャッキングの仕組み
ひよこ ひよこ

クリックジャッキングってどういう仕組み?

ペンギン先生 ペンギン先生

たとえば「無料プレゼントはこちら」というボタンがあるページを表示するんだけど、その上に透明にしたiframeで銀行の送金ページを重ねて表示するんだ。ユーザーが「プレゼント」ボタンを押したつもりが、実は送金ボタンを押してしまう、という仕組みだよ。

ひよこ ひよこ

透明ってどういうこと?見えないの?

ペンギン先生 ペンギン先生

CSSのopacity:0で完全に透明にできるんだ。見た目は下のページしか見えないけど、クリックは上に重ねた透明なページに対して行われる。ユーザーからは全く見えないから、何が起きたか気づかないんだよ。

ひよこ ひよこ

どうやって防ぐの?

ペンギン先生 ペンギン先生

サーバ側でX-Frame-Optionsヘッダを設定して、自分のサイトがiframeに埋め込まれるのを禁止するのが基本だよ。「DENY」で完全拒否、「SAMEORIGIN」で同一オリジンのみ許可にできる。より新しい方法として、CSPのframe-ancestorsディレクティブでも制御できるよ。

ひよこ ひよこ

ユーザー側でできることはある?

ペンギン先生 ペンギン先生

ブラウザを最新に保つことが大事だよ。最新ブラウザにはクリックジャッキング対策が組み込まれているからね。あとは不審なサイトでむやみにクリックしない、NoScriptなどのブラウザ拡張を使うのも有効だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「クリックジャッキング」って出てきたら「透明なレイヤーで意図しないクリック操作をさせる攻撃だな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Clickjacking」 = クリックの乗っ取り
💬 click(クリック)+ hijacking(乗っ取り)の造語。UI redress attackとも呼ばれるよ
← 用語集にもどる