X-XSS-Protection
HTTP の X-XSS-Protection
レスポンスヘッダーは Internet Explorer, Chrome, Safari の機能で、反射型クロスサイトスクリプティング (XSS) 攻撃を検出したときに、ページの読み込みを停止するためのものです。強い Content-Security-Policy
をサイトが実装して、インライン JavaScript の使用を無効にしていれば ('unsafe-inline'
)、現在のブラウザーではこれらの防御は大枠で不要なものですが、まだ CSP に対応していない古いウェブブラウザーを使用しているユーザーには防御になります。
- Chrome は XSS Auditor を削除しました
- Firefox は対応しておらず、
X-XSS-Protection
を今後も実装しません - Edge は XSS filter を廃止しました
つまり、レガシーブラウザをサポートする必要がない場合は、代わりに Content-Security-Policy
を使用し unsafe-inline
を許可しないことをお勧めします。
構文
X-XSS-Protection: 0 X-XSS-Protection: 1 X-XSS-Protection: 1; mode=block X-XSS-Protection: 1; report=<reporting-uri>
- 0
- XSS フィルタリングを無効化します。
- 1
- XSS フィルタリングを有効化します (通常はブラウザーの既定値です)。クロスサイトスクリプティング攻撃を検知すると、ブラウザーはページをサニタイズします (安全でない部分を取り除きます)。
- 1; mode=block
- XSS フィルタリングを有効化します。攻撃を検知すると、ページをサニタイジングするよりも、ページのレンダリングを停止します。
- 1; report=<reporting-URI> (Chromium only)
- XSS フィルタリングを有効化します。クロスサイトスクリプティング攻撃を検知すると、ブラウザーはページをサニタイズし、攻撃レポートを作成します。レポートを送信するために、 CSP report-uri (en-US) ディレクティブ機能を利用します。
例
XSS 攻撃が反映されたページを見つけたらその読み込みをブロックする場合。
X-XSS-Protection: 1; mode=block
PHP
header("X-XSS-Protection: 1; mode=block");
Apache (.htaccess)
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
</IfModule>
Nginx
add_header "X-XSS-Protection" "1; mode=block";
仕様書
仕様書や草案で定義されたものではありません。
ブラウザーの互換性
BCD tables only load in the browser