「X-XSS-Protection」の版間の差分
提供: セキュリティ
行1: | 行1: | ||
− | HTTPレスポンスヘッダに[[X-XSS-Protection]]を指定することで、[[ウェブブラウザ]]に対して、[[XSS]] | + | HTTPレスポンスヘッダに[[X-XSS-Protection]]を指定することで、[[ウェブブラウザ]]に対して、[[XSS]]フィルター機能(XSS Filter)を有効にする指示ができます。IE8以降に導入されたXSSフィルターが[[X-XSS-Protection]]ヘッダによって活性化できます。 |
+ | |||
'''読み方''' | '''読み方''' | ||
;[[X-XSS-Protection]]: えっくす えっくすえすえす ぷろてくしょん | ;[[X-XSS-Protection]]: えっくす えっくすえすえす ぷろてくしょん | ||
+ | ;XSS Filter:えっくす えすえす ふぃるたー | ||
__TOC__ | __TOC__ | ||
== 概要 == | == 概要 == | ||
− | [[X-XSS-Protection]] は、[[ウェブブラウザ]] の [[XSS]] フィルターを有効化するためのオプションです。 | + | [[X-XSS-Protection]] は、[[ウェブブラウザ]] の [[XSS]] フィルターを有効化するためのオプションです。[[XSS]]の問題を完全に取り除くものではなく、[[XSS]]による攻撃を緩和するためのものです。 |
[[Internet Explorer]] 8 から実装されました | [[Internet Explorer]] 8 から実装されました | ||
行15: | 行17: | ||
HTTPレスポンスヘッダに X-XSS-Protection: 0 があると、インターネットオプションの設定よりも優先されます。0 のとき、[[XSS]] フィルター機能がオフになります。 | HTTPレスポンスヘッダに X-XSS-Protection: 0 があると、インターネットオプションの設定よりも優先されます。0 のとき、[[XSS]] フィルター機能がオフになります。 | ||
− | + | == IE8の動作 == | |
+ | 反射型XSSを検知すると、IE8は、ページをレンダリングしません。IEは、 # だけを表示します。 | ||
+ | 日本語版のWindows環境では、ブラウザの下部に「クロスサイトスクリプトを防止するために、このページは変更されました。」と表示します。 | ||
== Internet Explorer の設定 == | == Internet Explorer の設定 == | ||
* コントロールパネルのインターネットオプションを開く | * コントロールパネルのインターネットオプションを開く | ||
行22: | 行26: | ||
* レベルのカスタマイズ | * レベルのカスタマイズ | ||
* XSSフィルターを有効にする | * XSSフィルターを有効にする | ||
− | |||
== 検出や防御できるもの == | == 検出や防御できるもの == | ||
* HTTPレスポンスの元となるHTTPリクエストにスクリプト注入([[XSS]])攻撃パターンとみなされるものが含まれていて、そのパターンと同じものが[[HTTPレスポンス]]にも出現している | * HTTPレスポンスの元となるHTTPリクエストにスクリプト注入([[XSS]])攻撃パターンとみなされるものが含まれていて、そのパターンと同じものが[[HTTPレスポンス]]にも出現している | ||
* HTTPレスポンスの元となるHTTPリクエストを発生させたアクションやリンクが、HTTPレスポンスを返したサイトと異なるサイトから発生したものである | * HTTPレスポンスの元となるHTTPリクエストを発生させたアクションやリンクが、HTTPレスポンスを返したサイトと異なるサイトから発生したものである | ||
* 同一のサーバでも、ホスト名による参照とIPアドレスによる参照は、異なるサイトとみなす。 | * 同一のサーバでも、ホスト名による参照とIPアドレスによる参照は、異なるサイトとみなす。 | ||
− | + | == 阻止できないもの == | |
+ | * document.write() によるページ内へのスクリプトタグ(<code><script>...</script></code>)の挿入 | ||
+ | * DOMを通じた <script> タグのスクリプト内容の書き換え | ||
+ | * JSONPを使用したスクリプトの無防備な取り込み | ||
== 使い方 == | == 使い方 == | ||
=== Apache HTTP Server === | === Apache HTTP Server === | ||
行34: | 行40: | ||
Header set X-XSS-Protection "1; mode=block" | Header set X-XSS-Protection "1; mode=block" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=== nginx === | === nginx === | ||
[[nginx]] での設定の例を以下に示します。 | [[nginx]] での設定の例を以下に示します。 | ||
行40: | 行45: | ||
add_header X-XSS-Protection "1; mode=block"; | add_header X-XSS-Protection "1; mode=block"; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | === node.js + Express === | |
+ | node.js + Express な環境の場合には、app.js に下記コードを追加します。 | ||
+ | <syntaxhighlight lang="javascript"> | ||
+ | app.get('/*', function(req,res,next) { | ||
+ | res.header('X-XSS-Protection', '1; mode=block'); | ||
+ | next(); | ||
+ | }); | ||
+ | </syntaxhighlight> | ||
== 関連項目 == | == 関連項目 == | ||
* [[XSS]] | * [[XSS]] | ||
* [[脆弱性]] | * [[脆弱性]] | ||
* [[有効なセキュリティに関するHTTPヘッダ]] | * [[有効なセキュリティに関するHTTPヘッダ]] | ||
− | + | * [[JavaScript]] | |
− | <!-- vim: filetype=mediawiki --> | + | * [[同一生成元ポリシー]] |
+ | <!-- vim: filetype=mediawiki | ||
+ | --> |
2015年3月22日 (日) 20:03時点における版
HTTPレスポンスヘッダにX-XSS-Protectionを指定することで、ウェブブラウザに対して、XSSフィルター機能(XSS Filter)を有効にする指示ができます。IE8以降に導入されたXSSフィルターがX-XSS-Protectionヘッダによって活性化できます。
読み方
- X-XSS-Protection
- えっくす えっくすえすえす ぷろてくしょん
- XSS Filter
- えっくす えすえす ふぃるたー
目次
概要
X-XSS-Protection は、ウェブブラウザ の XSS フィルターを有効化するためのオプションです。XSSの問題を完全に取り除くものではなく、XSSによる攻撃を緩和するためのものです。
Internet Explorer 8 から実装されました
WebサーバーからのHTTPレスポンスヘッダの例は、以下の種類があります。
X-XSS-Protection: 1 X-XSS-Protection: 1; mode=block
HTTPレスポンスヘッダに X-XSS-Protection: 0 があると、インターネットオプションの設定よりも優先されます。0 のとき、XSS フィルター機能がオフになります。
IE8の動作
反射型XSSを検知すると、IE8は、ページをレンダリングしません。IEは、 # だけを表示します。 日本語版のWindows環境では、ブラウザの下部に「クロスサイトスクリプトを防止するために、このページは変更されました。」と表示します。
Internet Explorer の設定
- コントロールパネルのインターネットオプションを開く
- セキュリティ
- 該当するゾーン
- レベルのカスタマイズ
- XSSフィルターを有効にする
検出や防御できるもの
- HTTPレスポンスの元となるHTTPリクエストにスクリプト注入(XSS)攻撃パターンとみなされるものが含まれていて、そのパターンと同じものがHTTPレスポンスにも出現している
- HTTPレスポンスの元となるHTTPリクエストを発生させたアクションやリンクが、HTTPレスポンスを返したサイトと異なるサイトから発生したものである
- 同一のサーバでも、ホスト名による参照とIPアドレスによる参照は、異なるサイトとみなす。
阻止できないもの
- document.write() によるページ内へのスクリプトタグ(
<script>...</script>
)の挿入 - DOMを通じた <script> タグのスクリプト内容の書き換え
- JSONPを使用したスクリプトの無防備な取り込み
使い方
Apache HTTP Server
Apache HTTP Server での設定の例を以下に示します。
Header set X-XSS-Protection "1; mode=block"
nginx
nginx での設定の例を以下に示します。
add_header X-XSS-Protection "1; mode=block";
node.js + Express
node.js + Express な環境の場合には、app.js に下記コードを追加します。
app.get('/*', function(req,res,next) { res.header('X-XSS-Protection', '1; mode=block'); next(); });