Hatena::ブログ(Diary)

あすのかぜ Twitter

2016-10-09

XSSを防ぐ新しいXSS-Protectionヘッダ

Googleの調査によると、CSPによるXSSの防止は現実的にデプロイの欠陥によりXSSの防止効果がないことを示しています。調査は「CSP Is Dead, Long Live CSP!」としてACMのカンファレンスで発表され、ペーパーも閲覧することができます。


9月に行われたW3C TPAC 2016のWebAppSecのミーティングで議論され、GoogleのMike West氏より新しくXSS Protectionという使用が提案されている。仕様も、氏のリポジトリから確認することができる。

https://mikewest.github.io/artur-yes/


このXSS Protectionは、新しくXSS-Protectionヘッダを定義し、CSPの一部の機能を引き取りX-XSS-Protectionでサポートされているような機能を有します。目的は簡潔でわかりやすく、CSPと同等のXSS軽減機能を提供することです


XSS-Protectionヘッダ

XSS-Protectionヘッダは、json形式のヘッダ値を持ちます。


下記の例では、XSS-Protectionヘッダでノンス値を指定します。その場合、そのノンス値が指定されたスクリプトタグのみが実行されます。

XSS-Protection: { "nonce": "abcdefg" }
<!-- このスクリプトは実行される -->
<script src="script.js" nonce="abcdefg"></script>

<!-- このスクリプトは実行されません -->
<script src="script.js"></script>

指定できる項目

hash

実行を許可するスクリプトのハッシュ値を指定する

XSS-Protection: { "hash": [ "sha256-abcd...", "sha256-zyx..." ] }
<script src="script.js" integrity="sha256-abcd..."></script>
<script>
  // Content which hashes to abcd... goes here.
</script>

nonce

実行を許可するScriptに指定されるノンス属性の値を指定

XSS-Protection: { "nonce": "abcdefg" }
<script src="script.js" nonce="abcdefg"></script>

reflection

反射型XSSに対するポリシーに対して、ignore, filter, blockを指定する。ignoreの場合はユーザエージェントの保護機能を無効にする、filterはユーザエージェントのXSS検知機能で、検知された場合はそのスクリプトの実行をブロックする。blockは、ユーザエージェントのXSS検知機能で検出された場合にそのページのロード自体をブロックする。

XSS-Protection: { "reflection": "block" }

report

Reporting APIに則ってレポートグループを指定する。

XSS-Protection: { "nonce": "abcdefg", "report": "group1" }
Report-To: { "url": "https://example.com/report", "group": "group1", "max-age": 10886400 }

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/ASnoKaze/20161009/1475941176