1

私が理解しているように、GETリクエストを介してXSSが発生するのを防ぐために、サーバー側のヘッダーでX-XSS-Protectionを無効にする必要があります。

たとえば、ユーザーは次の場所を参照します。

http://mysite.com/index.php?page=<script type='text/javascript'> alert("XSS"); </script>

$_GET['page'] が変更されずに PHP からページにエコーされると仮定すると、XSS オーディターは、ページにエコーされる要求からのものがあることをキャッチし、それを停止する必要があります。

これは XSS 攻撃を防ぐのに十分でしょうか?それとも、このブラウザー保護は攻撃者によってバイパスされる可能性がありますか?

すべての主要なブラウザーでサポートされており、バイパスできないという意味で十分です。

4

3 に答える 3

2

いいえ、まったくありません。クライアント側の XSS フィルタリングは、問題を解決するための十分な知識がないクライアント側で、サーバー側の問題 (出力エスケープの欠落) を解決しようとしています。100% 機能することはなく、常に誤検知が発生します。これは多層防御の手段であり、非常に疑わしいものです。XSS の解決策として、これだけに頼ってはいけません

クライアント側の XSS フィルタリング:

  • 多重反射 XSS を防御できません (つまり<、1 つのパラメーターとscript、その隣に出力を取得する別のパラメーターに含める)。

  • アプリケーション固有のエンコーディング層 (例: JSON 形式での送信、エスケープせずにデコードおよび表示) を防御できません。

  • フォーム パラメーター以外の入力の種類に対して防御することはできません。

  • スクリプト以外のコンテンツをページに挿入することに基づく攻撃を防御することはできません。

  • CSS など、スクリプトを挿入するあいまいな方法に対する防御の非常にまだら模様の歴史があります。

  • 保存された XSS をまったく防御できません。

  • すべての一般的なブラウザーでサポートされているわけではありません。

  • 攻撃者がページ上のスクリプトを選択的に無効にし、妨害することを可能にします。

これは勝利ではありません。

于 2013-07-23T11:07:23.430 に答える
1

ブラウザのバージョンとタイプは常に予測できないため、あらゆる種類の保護のためにユーザーのブラウザに依存することはお勧めしません。つまり、サーバー/アプリケーション レベルで XSS (またはその他の種類の攻撃) を防止するためのあらゆる手段を講じていることを確認する必要があります。

于 2013-07-23T02:07:02.077 に答える
1

反射型 XSS 攻撃を捕捉するには十分かもしれませんが、さらに有害な持続型XSS 攻撃を防ぐ方法はありません。さらに、すべてのブラウザーが XSS 保護を備えているわけではありません。出力のエスケープを怠ったという理由だけで、本当に一部のユーザーだけを保護したいですか? 適切な場所でエスケープすると、ブラウザーが XSS 保護を欠いている場合でも、両方のタイプの XSS が修正されます。

于 2013-07-23T03:31:56.583 に答える