X-Frame-Options
ヘッダーは、サイトが他のドメインによってiFrame化されるのを防ぎます。 ALLOW-FROM
ディレクティブを受け入れるブラウザでは、指定できるOriginは1つだけです。最新のUAにはCSP 2.0 frame-ancestors
ディレクティブを使用できます。
そうは言っても、要求リファラーに基づいて応答ヘッダーを動的にレンダリングし、応答に設定するX-Frame-Options
ヘッダーのタイプを決定することが可能です。
たとえば、デフォルトでX-Frame-Options: deny
を提供し、コントローラーレベルでdeny
をレンダリングするか、X-Frame-Options
ヘッダーを送信せずに、そのリクエストをiFrame化することができます。
疑似コード:
referer_Host = request.referer
if allowed_origins.includes(referer_Host)
response.headers['X-Frame-Options'] = '' # Remove header from response
else
response.headers['X-Frame-Options'] = 'deny'
end
このセキュリティメカニズムを無効にすることはできますか?攻撃者が制御するドメインが、UAがjavascriptハッカーを介して送信するreferer
値を偽造することは可能ですか?
私の知る限り、通常のブラウジングセッションで完全に偽のリファラーヘッダーを挿入することは不可能です。ただし、Refererヘッダーがまったく送信されないようにするには、さまざまな方法があります。したがって、Refererヘッダーが設定されており、Refererのドメインが明示的にサイトのフレーム化を許可されている場合にのみフレーム化を許可する限り、安全である必要があります。
ただし、good-site
やhttp://bad-site/good-site/
などの方法でフレームを作成できるため、http://good-site.bad-site/
を確認するために、Refererで盲目的に正規表現がスローされないことを確認してください。あなたはそのような間違いをする最初ではないでしょう。