クロスサイトスクリプティング(XSS)の脆弱性



👨‍💻クロスサイトスクリプト( XSS )とは
クロスサイトスクリプティング(XSS)は、攻撃者がクライアント側スクリプト(通常Javascript)をウェブページに注入することができる脆弱性です.
ユーザーが影響を受けたページを読み込むと、攻撃者のスクリプトが実行され、セッショントークンやクッキーを盗むことができます.XSS脆弱性は、通常、アプリケーションがユーザー入力を受け取り、それを無効化ページに出力するときに発生します.

🔀 クロスサイトスクリプティング(XSS)攻撃のタイプ

永続的なXSS攻撃
攻撃のこのタイプでは、スクリプトは永久に標的サーバーに格納されて、したがって、永続的なクロスサイトスクリプティング攻撃として知られています.この攻撃は悪意のあるコマンドを何かに注入しようとします.例えば👇
  • フォーラムの投稿
  • ログインフィールド
  • データベースに格納されたエントリ
  • 攻撃のこのタイプで、感染した出版物、メッセージまたはどんな要素でも見るすべての人々は、攻撃の犠牲者になります.


    ミラーのXSS攻撃
    この2番目の攻撃では、攻撃者はスクリプトを脆弱なサイトに注入し、それをユーザに返す.これを行う最も一般的な方法のうち、ユーザー入力がページの出力の一部となるページが攻撃されます.
    検索ページは、ユーザーに検索用語を表示することができますこの攻撃のためのアベニューを提供することができます.ユーザーの入力に注入されたスクリプトは、Webアプリケーションによって保存されることはありません.


    DOMベース攻撃
    この3番目のクロスサイトスクリプティング攻撃はブラウザで完全に起こります.攻撃は、DOMとして知られているブラウザー内のWebページの内部モデルを操作し、DOMベースの攻撃として知られています.
    前の2つのように、攻撃者は悪意あるコードを実行することができます.サーバーによって返されたコードは、Webページの実行可能なJavaScriptに操作されます.


    ❌クロスサイトスクリプトを防ぐ方法
    クロスサイトスクリプティング(XSS)攻撃を防ぐためには、ユーザーまたは任意の外部からの任意の入力を信頼しないように最適です.
    Webアプリケーションは、このデータをソースにかかわらず潜在的に危険に扱う必要があります.私たちは3つの特定のASPを見るつもりです.簡単な方法でこれらの攻撃を防ぐネットメソッド✅

    適切なHTTPヘッダを使用する
    HTTPヘッダーは、任意の通信に使用されるリクエストとレスポンスの一部です.彼らは特定の方法でデータを扱うためにブラウザを指示することができますし、ウェブサイトのセキュリティを高めることができます命令を含める.
    HTTP X - XSS - Protection Headerはブラウザーに特定のクロスサイトスクリプティング攻撃を防ぐことができるクロスサイトスクリプティングフィルタを可能にするように指示します.
    そのうちの一つは👇
    X-XSS-Protection: 1;
    or
    X-XSS-Protection: 1; mode=block;
    
    ヘッダーを1の値に設定することによって、クロスサイトスクリプト化攻撃が検出されるならば、ページは消毒されます.
    追加mode = block; ヘッダーでは、クロスサイトスクリプティング(XSS)攻撃を検出した場合、ページは表示を停止します.
    このHTTPヘッダーをASPに追加します.NETアプリケーションでは、次のコードをWebに追加します.内部の設定ファイル<system.webServer> 👇
    <httpprotocol>
    <customheaders>
    <add name=X-XSS-Protection value=1; mode=block />
    </customheaders>
    </httpprotocol>
    

    HTMLコードにデータを安全に挿入する
    HTML DOMを安全に使用し、以前に見たようにDOMベースのXSSを避けるために安全な方法を使うことが重要です.HTMLマークアップに動的にコンテンツを挿入するときに使用できるいくつかのメソッドがあり、それらの一部は、他のサイトよりもクロスサイトスクリプト攻撃を起こしやすい傾向があります.
    たとえば、HTML要素にテキストを追加する場合は、HTMLコードとしてではなく、テキストとして情報を解釈するメソッドを使用する必要があります.
    このプロパティはすべての入力をテキストとして解釈する👇
    document.getElementById(id).textContent = user data;
    
    HTML要素を解釈することができますが👇
    document.getElementById(id).innerHTML = user data;
    
    これはクロスサイトスクリプティング(XSS)攻撃に脆弱になります.

    Antixssライブラリを使う
    このライブラリにはクロスサイトスクリプティング(XSS)攻撃を防ぐための多くの方法があります.信頼されていないデータがどこに置かれるか、そして、どのようにそこに置かれるかに基づいて、スクリプトフィルタメソッドを使用することは重要です.例えば、
  • 信頼できないデータをHTML属性に挿入する前にAntiXSS.HtmlAttributeEncode メソッドは、攻撃者がHTML属性をエスケープするのを防ぐように設計されています.
  • AntiXSS.HTMLEncode HTML要素内の信頼できないデータを追加する前に使用する必要があります.

  • 🟢結論
    クロスサイトスクリプティング(XSS)の防止は容易ではない.OWASPは、クロスサイトスクリプティングを使用してターゲットにすることができます80以上のベクトルを一覧表示します.
    からDotnetsafer この記事を読んであなたの時間に感謝したいと思いますbest C# Blog あなたはもっと学ぶことができます.
    今すぐ無料でお試しくださいbest C# obfuscator . また、Visual Studioから直接アプリケーションを保護することができますC# Obfuscator Extension VS . また、その前に学ぶことができます.