0

クリックジャッキングを防ぐために、アプリケーションに次の Javascript スニペットがあります。

<script language="javascript" type="text/javascript">
     var style = document.createElement('style');
     style.type = "text/css";
     style.id = "antiClickjack";
     style.innerHTML = "body{display:none !important;}";
     document.head.appendChild(style);

     if (self === top) {
         var antiClickjack = document.getElementById("antiClickjack");
         antiClickjack.parentNode.removeChild(antiClickjack);
     } else {
         top.location = self.location;
     }
</script>

基本的に、デフォルトで現在のページの本文を非表示にするスタイル要素 (オンザフライの CSS) を作成します。その後、クリックジャッキングが検出されない場合は削除します。したがって、このようにすると、Javascript を持っていない人もページを見ることができます (ただし、クリックジャッキングからは保護されません)。

これは、不明なランタイム エラーの例外をスローする Internet Explorer を除くすべてのブラウザーで機能します。誰かがこれを修正する方法について提案がありますか?

ありがとう :-)

4

2 に答える 2

4

<style>を介して要素のコンテンツを設定することはできませんinnerHTML。正しいプロパティ名はcssTextだと思いますが、MSDN を確認する必要があります。

編集— うん、それだけです。

したがって、あなたのコードはこれを行うことができます:

 var style = document.createElement('style');
 style.type = "text/css";
 style.id = "antiClickjack";
 if ('cssText' in style)
   style.cssText = "body{display:none !important;}";
 else
   style.innerHTML = "body{display:none !important;}";
于 2011-11-17T15:12:12.717 に答える