1

私たちのコードには、以前の開発者がフレーム バスティング (クリックジャッキングを止めるため) の予防措置を講じようとしたという問題があります。とにかく、彼らは次のコードをすべてのページの上部に配置しました。要素.aspx内ではなく、その上に配置しました。head

<script type="text/javascript">    
if (self == top) {
    var theBody = document.getElementsByTagName('body')[0]
    theBody.style.display = "block"
} else {
    top.location = self.location
}

theBodybody タグがまだロードされていないため、上記が未定義であるため、問題が発生していることは明らかにセキュリティにとって重要です。したがって、コードの中断を止めるためにjs、上記のスクリプトを切り取ってページの下部に貼り付けます。これは一種の修正です。このアプローチは、そもそもコードを使用する実際の理由を無効にするのではないかと考えただけです。誰か私にこれについてアドバイスをくれませんか?

4

3 に答える 3

2

クリックジャッキングを防止する最も効果的な方法は、次X-Frame-Optionsのような適切な値で応答ヘッダーを出力することDENYです。

X フレーム オプション: 拒否

ブラウザはこれを確認し、値に応じてページがフレーム化されないようにします。

フレーム バスティング JavaScript は、ヘッダーをサポートしていない古いブラウザーX-Frame-Options(IE7 以前など) のフォールバックとして使用されます。

body エラーに関しては、 body 要素は、ブラウザーが HTML で解釈して DOM で作成した後にのみ使用可能になります。body タグの前にコードを実行するとエラーが表示されるのはこのためです。display:blockこのコードでbody を に設定する理由を開発者に尋ねる必要があります。おそらく、本体はdisplay:noneデフォルトで CSS に含まれていますか?

于 2014-05-01T13:34:35.477 に答える
2

私は同じことを研究していて、この追加情報を見つけました。オプション DENY を指定すると、ページがフレーム化されなくなります。同じオリジンの別の Web ページでページをフレーム化したい場合は、SAMEORIGIN オプションを使用できます。同じオリジンとは、URI スキーム、ホスト名、およびポート番号が同じであることを意味します。ただし、フレームに任意の URL を受け入れるページがドメインにある場合は、SAME ORIGIN を使用しないでください。攻撃を軽減することはできません。詳細については、この記事を参照してください。

于 2016-01-28T08:53:00.910 に答える