「X-XSS-Protection」の版間の差分

提供: セキュリティ
移動: 案内検索
 
(同じ利用者による、間の2版が非表示)
行1: 行1:
<!--
+
HTTPレスポンスヘッダに[[X-XSS-Protection]]を指定することで、[[ウェブブラウザ]]に対して、[[XSS]]フィルター機能(XSS Filter)を有効にする指示ができます。IE8以降に導入されたXSSフィルターが[[X-XSS-Protection]]ヘッダによって活性化できます。
vim: filetype=mediawiki
+
 
-->
+
'''読み方'''
HTTPレスポンスヘッダに[[X-XSS-Protection]]を指定することで、[[ウェブブラウザ]]に対して、[[XSS]]フィルター機能を有効にする指示ができます。
+
読み方
+
 
;[[X-XSS-Protection]]: えっくす えっくすえすえす ぷろてくしょん
 
;[[X-XSS-Protection]]: えっくす えっくすえすえす ぷろてくしょん
 +
;XSS Filter:えっくす えすえす ふぃるたー
 
__TOC__
 
__TOC__
  
 
== 概要 ==
 
== 概要 ==
 
+
[[X-XSS-Protection]] は、[[ウェブブラウザ]] の [[XSS]] フィルターを有効化するためのオプションです。[[XSS]]の問題を完全に取り除くものではなく、[[XSS]]による攻撃を緩和するためのものです。
[[X-XSS-Protection]] は、[[ウェブブラウザ]] の [[XSS]] フィルターを有効化するためのオプションです。
+
  
 
[[Internet Explorer]] 8 から実装されました
 
[[Internet Explorer]] 8 から実装されました
行19: 行17:
  
 
HTTPレスポンスヘッダに X-XSS-Protection: 0 があると、インターネットオプションの設定よりも優先されます。0 のとき、[[XSS]] フィルター機能がオフになります。
 
HTTPレスポンスヘッダに X-XSS-Protection: 0 があると、インターネットオプションの設定よりも優先されます。0 のとき、[[XSS]] フィルター機能がオフになります。
 
+
== IEの動作 ==
 +
反射型XSSを検知すると、IE8(IE8以降)は、ページをレンダリングしません。IEは、 # だけを表示します。
 +
日本語版のWindows環境では、ブラウザの下部に「クロスサイトスクリプトを防止するために、このページは変更されました。」と表示します(IE11で検証済み)。
 
== Internet Explorer の設定 ==
 
== Internet Explorer の設定 ==
 
 
* コントロールパネルのインターネットオプションを開く
 
* コントロールパネルのインターネットオプションを開く
 
* セキュリティ
 
* セキュリティ
行27: 行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 ===
 
 
[[Apache HTTP Server]] での設定の例を以下に示します。
 
[[Apache HTTP Server]] での設定の例を以下に示します。
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
Header set X-XSS-Protection "1; mode=block"
 
Header set X-XSS-Protection "1; mode=block"
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
 
=== nginx ===
 
=== nginx ===
 
 
[[nginx]] での設定の例を以下に示します。
 
[[nginx]] での設定の例を以下に示します。
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
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
 +
-->

2015年3月22日 (日) 20:04時点における最新版

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 フィルター機能がオフになります。

IEの動作

反射型XSSを検知すると、IE8(IE8以降)は、ページをレンダリングしません。IEは、 # だけを表示します。 日本語版のWindows環境では、ブラウザの下部に「クロスサイトスクリプトを防止するために、このページは変更されました。」と表示します(IE11で検証済み)。

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();
});

関連項目