web-dev-qa-db-ja.com

ASP.NET C#でクリックジャッキングによってWebサイトを防止する方法は?

私は、クリックジャック攻撃から保護する必要がある動的なWebサイトを持っています。検索中にこれらのタイプの値を取得するデータベースでは、クリックジャックについてもう少し知っていましたが、正確にはそうではありません。知っている人は私を助けてください。

27
shashank

X-FRAME-Options

このコードをglobal.asaxファイルに追加します。

protected void Application_BeginRequest(object sender, EventArgs e)
{
  HttpContext.Current.Response.AddHeader("x-frame-options", "DENY");
}

[〜#〜]または[〜#〜]

これをWeb.Configファイルの<system.webServer>に追加するだけです

<!--Clickjacking security-->
    <httpProtocol>
      <customHeaders>
        <add name="X-Frame-Options" value="DENY" />
      </customHeaders>
    </httpProtocol>
    <!--End clickjacking-->

この小さなスニペットは、x-frame-optionsと呼ばれるhttpヘッダーをhttp応答に追加し、「モダン」ブラウザーのiframeにサイトが読み込まれないようにします。
X-Frame-Optionsには3つの値があります。

  1. [〜#〜] deny [〜#〜]:どのサイトにもアプリケーションのフレームを許可しない
  2. [〜#〜] sameorigin [〜#〜]:同じアプリケーションサイトのみがフレームを許可する
  3. ALLOW-FROM:特定のドメインにのみアプリケーションのフレーミングを許可します
73

試してみてください 現在のレガシーブラウザのフレーム分割スクリプト

クリックジャッキングを防ぐ1つの方法は、フレーム化すべきではない各ページに「フレームブレーカー」スクリプトを含めることです。次の方法論は、X-Frame-Options-HeaderをサポートしないレガシーブラウザーでもWebページがフレーム化されるのを防ぎます。

ドキュメントHEAD要素に、以下を追加します。

最初に、スタイル要素自体にIDを適用します。

<style id="antiClickjack">body{display:none !important;}</style>

そして、スクリプトの直後にIDでそのスタイルを削除します。

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