フレームバスターバスター...バスターコードが必要質問する

フレームバスターバスター...バスターコードが必要質問する

他のサイトがあなたのサイトを「フレーム」化することを望まないとします<iframe>:

<iframe src="http://example.org"></iframe>

そこで、すべてのページにフレーム解除とフレーム破壊の JavaScript を挿入します。

/* break us out of any containing iframes */
if (top != self) { top.location.replace(self.location.href); }

素晴らしい! これで、包含する iframe を自動的に「破壊」または解除できます。ただし、小さな問題が 1 つあります。

結局のところ、フレームバスティングコードは破壊される可能性があるここに示すように:

<script type="text/javascript">
    var prevent_bust = 0  
    window.onbeforeunload = function() { prevent_bust++ }  
    setInterval(function() {  
      if (prevent_bust > 0) {  
        prevent_bust -= 2  
        window.top.location = 'http://example.org/page-which-responds-with-204'  
      }  
    }, 1)  
</script>

このコードは次のことを行います。

  • window.onbeforeunloadブラウザが現在のページから移動しようとするたびに、イベントハンドラを介してカウンターを増分します。
  • を介して1ミリ秒ごとに起動するタイマーを設定しsetInterval()、カウンターが増加した場合は、現在の場所を攻撃者の制御下にあるサーバーに変更します。
  • そのサーバーはHTTPステータスコード204のページを提供し、ブラウザはどこにも移動しません。

私の質問は、実際の問題というよりは JavaScript パズルなのですが、フレーム破壊バスターにどう対処すればよいかということです。

いくつか考えはありましたが、私のテストでは何も機能しませんでした。

  • onbeforeunloadイベントをクリアしようとしてもonbeforeunload = null効果はありませんでした
  • プロセスを停止すると、alert()ユーザーにプロセスが起こっていることを知らせますが、コードには一切干渉しません。[OK]をクリックすると、通常どおりにバスト処理が続行されます。
  • setInterval()タイマーをクリアする方法が思いつかない

私は JavaScript プログラマーではないので、ここで皆さんに挑戦してみます。ねえバスター、フレームを破壊するバスターを破壊できますか?

ベストアンサー1

おすすめ記事