web-dev-qa-db-ja.com

ClickJacking攻撃を防ぐためにX-FRAME-OPTIONSを使用する必要はありますか?

私はこのJavaScriptコードを使用しており、完全に機能します。

if(top.location!= location)top.location.href = location.href

多くの研究者がこれを使わないように言った。

誰もそれをバイパスできますか?

これを使用すると、何かリスクがありますか?

そのうちの1人は、攻撃者がlocation変数を再定義できると私に言った:

var location = 'foo';

しかしGoogle Chromeでは、これはうまくいかないようです

3
wking77

あなたは ClickJacking 攻撃について話している。 (タイトルは私の編集前は異なっていました)

誰もそれをバイパスできますか?

はい、ページをiframeに読み込むときにこれをバイパスできます。残念ながら、現時点ではコードがありません。ただし、実行できるのは、iframeのロード中にJavaScriptを無効にすることです。これにより、フレーム無効化コードがバイパスされます。 (私の謙虚な意見には、フレームバスティングコードなどはありません)

ClickJacking攻撃を防ぐためにX-FRAME-OPTIONSを使用する必要はありますか?

新しいブラウザでは、ClickJacking攻撃を防ぐのが標準です。応答ごとにヘッダーを追加するのは非常に簡単なので、使用しない理由はわかりません。

それらの1つは、攻撃者が場所変数を再定義できると私に言った:

var location = 'foo';

すべてのコードが表示されるわけではないため、これが悪用可能かどうかを判断するのは困難です。この1行のコードからわかるのは、攻撃者が変数の場所を変更することで自分のブラウザーを攻撃できるため、役に立たないということです。

6
Jeroen

誰もそれをバイパスできますか?

はい。これは、sandbox属性を持つものにすることができます。この属性を使用すると、iframe内のJavascriptの実行を無効にできるため、フレームバスターコードは実行されません。また、一部のクライアントでは、NoScriptブラウザー拡張機能を使用する場合など、JavaScriptの実行が無効になっている場合があります。

詳細については https://en.wikipedia.org/wiki/Framekiller を参照してください。また、フレーム無効化方法の科学的な比較とそれらを失敗させる方法については、参照 http:// crypto.stanford.edu/~dabo/pubs/papers/framebust.pdf

4
Steffen Ullrich