クリックジャッキングとは、透明な iframe を正規のページの上に重ね、ユーザーに意図しないクリックを誘導する攻撃手法です。ユーザーは自分が見ているボタンをクリックしたつもりでも、実際には背後の透明な iframe 内の別のボタン (購入確定、権限付与など) をクリックさせられます。
具体的な攻撃シナリオとして、 SNS の「いいね」ボタンの悪用があります。攻撃者は魅力的なコンテンツ (「無料プレゼント」など) のページを作成し、その上に Facebook の「いいね」ボタンを含む透明な iframe を重ねます。ユーザーが「プレゼントを受け取る」ボタンをクリックすると、実際には Facebook の「いいね」が押され、攻撃者のページが拡散されます。
クリックジャッキングの対策は主に 2 つあります。第一に、 X-Frame-Options HTTP レスポンスヘッダーで、自サイトのページが iframe に埋め込まれることを禁止します。 DENY (完全禁止) または SAMEORIGIN (同一オリジンのみ許可) を設定します。第二に、 CSP (Content Security Policy) の frame-ancestors ディレクティブで、より柔軟に埋め込み元を制御できます。 X-Frame-Options より CSP の方が新しい仕様であり、複数のオリジンを指定できる利点があります。
短縮 URL サービスでは、プレビューページや管理画面が iframe に埋め込まれてクリックジャッキングの標的になるリスクがあります。すべてのページに X-Frame-Options: DENY を設定し、 iframe への埋め込みを原則禁止するのが安全です。関連書籍は Amazon でも探せます。