クリックジャッキングと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'