web-dev-qa-db-ja.com

XSSは、HTTP X-XSS-Protectionヘッダーの導入により寿命に達しましたか?

HTTP X-XSS-Protectionヘッダーの導入により、脆弱性への影響(読み取り:最近のブラウザーで影響を受ける可能性のあるユーザーの数)が大幅に減少したように思えます。

まず、これは、X-XSS-Protectionヘッダーが適切に設定されていて、ブラウザーのXSS保護が有効になっている場合、Web開発者がXSSについて心配する必要がないことを意味しますか(少なくとも最新のブラウザーを使用する訪問者にとって)。 これは、「ブラウザーX、X、XおよびバージョンX以下をサポートしていません。」のように単純な場合もあります。

第二に、どの(人気のある)ブラウザーがこのセキュリティ機能を実装しましたか?それはデフォルトで有効になっていますか?そのバージョンがリリースされたのはどのバージョンからですか?

3番目に、そのブラウザーのXSSフィルターの既知のバイパスはありますか?

8
Bob Ortiz

XSSは、HTTP X-XSS-Protectionヘッダーの導入により寿命に達しましたか?

番号。 X-XSS-Protectionは、組み込みのフィルタリングを有効または無効にするためにのみ使用されます[*]-通常、デフォルトで有効になっています。

そのため、XSSがブラウザーフィルターを使用して寿命に達したかどうかは、より適切な質問になります。

しかし、再び、答えはノーです。次の3つの理由により、XSSは依然として危険です。

  • 永続的なXSSは、ブラウザがユーザー入力とそうでないものを知る方法がないため、ブラウザフィルタリングの影響を受けません。
  • Firefoxなどの一部のブラウザーには、XSSに対するフィルターがありません。 XSSの脆弱性はサーバー側に導入されるため、Web開発者はそれらを防御するブラウザーベンダーに依存すべきではありません。
  • ブラウザフィルタのバイパス:XSSは状況依存であるため、状況を知らずに防御することは非常に困難です(これは、XSSを防御する必要がある理由でもあります)いくつかの一般的な入力フィルターを介さずにデータを出力する)。

バイパスは基本的に次の2つの理由により発生します。

  1. フィルターにバグがあります。
  2. ユーザー入力は、フィルタリングが実用的でない場所にエコーされます。 1つの例は<script>[userinput]</script>

[*]ヘッダーはRFCで定義されていないため、ブラウザがどのように反応するかを言うのは困難です。たとえば、Chrome 51は、ヘッダーが0に設定されている場合、フィルターを無効にしますが、1が設定されている場合、ユーザーがフィルターを無効にした場合、フィルターを再度有効にしません。他のブラウザーが動作する場合があります。違う。

これは、「ブラウザX、X、XとバージョンX以下をサポートしていない」のように単純な場合もあります。

それほど簡単ではありません。特に大規模な組織は、更新が非常に悪いことで有名です。 Webサイトによっては、ブラウザーXをサポートしていないとは言えません。

第二に、どの(人気のある)ブラウザーがこのセキュリティ機能を実装しましたか?それはデフォルトで有効になっていますか?そのバージョンがリリースされたのはどのバージョンからですか

X-XSS-ProtectionIE、Chrome、Safari でサポートされています。

ChromeにはXSSフィルターがありました 2010(Chrome 4)以降 。同じ年にデフォルトで disabled でしたが、Chrome 8。

IEにはXSSフィルターがありました 2008(IE 8)以降

Firefoxにはフィルターがありません 、ただし、NoScriptプラグインにはあります。

3番目に、そのブラウザーのXSSフィルターの既知のバイパスはありますか?

はいもちろん 。もっとあります。ほとんどは特定の状況に依存します(たとえば、入力が2つの場所にエコーされる)。 IE8フィルターは実際には XSSの脆弱性を導入 を含んでいました。

19
tim

実際、そのヘッダー問題を解決できる可能性がありますであっても、2番目の部分は人的要因です。実際には、ホスティング業者/開発者/ウェブマスターが使用しようとしています...

0
Alexey Vesnin