クリックジャッキングとX-Frame-Options

クリックジャッキングとX-Frame-Optionsについて調べたことをまとめます。

クリックジャッキング

クリックジャッキング攻撃とは、ユーザを視覚的にだまして正常に見えるウェブページ上のコンテンツをクリックさせ、別のウェブページのコンテンツをクリックさせる攻撃のことである。その結果、ユーザが公開するつもりのないプライバシー情報を公開させられたり、意図しない情報を登録させられたりするなどの被害を受ける可能性がある。

出典: クリックジャッキング - IPA 独立行政法人 情報処理推進機構 PDF

悪意あるサイトはiframe を透明化して、攻撃対象のサイトを読み込みます。 X-Frame-Options レスポンスヘッダを設定することで、対策をすることができます。

X-Frame-Options

3種類の値を設定することができます。

DENY

サイト側の意図に関わらず、ページをフレーム内に表示することはできません。

SAMEORIGIN

自身と生成元が同じフレーム内に限り、ページを表示することができます。

ALLOW-FROM uri

指定された生成元に限り、ページをフレーム内に表示できます。

https://developer.mozilla.org/ja/docs/HTTP/X-Frame-Options

Railsでは...

SAMEORIGIN がデフォルトです。 https://github.com/rails/rails/blob/52ce6ece8c8f74064bb64e0a0b1ddd83092718e1/actionpack/lib/action_dispatch/railtie.rb#L22

Rails4.0 で導入されました。

一部機能をiframeとして外部に提供したい場合はレスポンスヘッダから削除すればokです。

response.headers.delete 'X-Frame-Options'