Download presentation
Presentation is loading. Please wait.
Published byさなえ うえや Modified 約 8 年前
1
HTML5時代の Webセキュリティ Jul 21 2012 Yosuke HASEGAWA
2
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 自己紹介 はせがわようすけ ネットエージェント株式会社 株式会社セキュアスカイ・テクノロジー 技術顧問 Microsoft MVP for Consumer Security Oct 2005 - http://utf-8.jp/ セキュリティキャンプ Webセキュリティクラス講師
3
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 これまでに調べた脆弱性 Webブラウザ、Webアプリケーションを中 心にいろいろ… CVE-2007-0995 XSS of Mozilla Firefox CVE-2007-1262 XSS of SquirrelMail CVE-2007-2227 XSS of Internet Explorer CVE-2008-0416 XSS of Mozilla Firefox CVE-2008-1468 XSS of Namazu CVE-2008-5808 XSS of Movable Type CVE-2010-1213 Cross-origin data disclosure of Mozilla Firefox CVE-2010-3348 Cross-origin data disclosure of Internet Explorer CVE-2010-3770 XSS of Mozilla Firefox CVE-2011-1339 XSS of Google Search Appliance CVE-2011-3384 XSS of Sage CVE-2011-3648 XSS of Mozilla Firefox...
4
難読化 JavaScript Obfuscated JavaScript
5
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({ }+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:( {}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+( $._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$ $_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$. $;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$ ($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$. __+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$ +",\\"+$.$__+$.___+"\\"+$.__$+$.__$+$._$_+$.$_$_+"\\"+$.__$+$.$$_+$. $$_+$.$_$_+"\\"+$.__$+$._$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\ "+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+"\\\"\\"+$.$__+$.___+ ")"+"\"")())(); 記号JavaScript JS without alnum jjencode - http://utf-8.jp/public/jjencode.html
6
゚ ω ゚ノ = / `m ´ )ノ ~ ┻━┻ //*´ ∇` */ ['_']; o=( ゚ー゚ ) =_=3; c=( ゚ Θ ゚ ) =( ゚ー゚ )-( ゚ー゚ ); ( ゚ Д ゚ ) =( ゚ Θ ゚ )= (o^_^o)/ (o^_^o);( ゚ Д ゚ )={ ゚ Θ ゚ : '_', ゚ ω ゚ノ : (( ゚ ω ゚ノ ==3) +'_') [ ゚ Θ ゚ ], ゚ー゚ノ :( ゚ ω ゚ノ + '_')[o^_^o - ( ゚ Θ ゚ )], ゚ Д ゚ノ :(( ゚ー゚ ==3) +'_')[ ゚ー゚ ] }; ( ゚ Д ゚ ) [ ゚ Θ ゚ ] =(( ゚ ω ゚ノ ==3) +'_') [c^_^o];( ゚ Д ゚ ) ['c'] = (( ゚ Д ゚ )+'_') [ ( ゚ー゚ )+( ゚ー゚ )-( ゚ Θ ゚ ) ];( ゚ Д ゚ ) ['o'] = (( ゚ Д ゚ )+'_') [ ゚ Θ ゚ ];( ゚ o ゚ )=( ゚ Д ゚ ) ['c']+( ゚ Д ゚ ) ['o']+( ゚ ω ゚ノ +'_')[ ゚ Θ ゚ ]+ (( ゚ ω ゚ノ ==3) +'_') [ ゚ー゚ ] + (( ゚ Д ゚ ) +'_') [( ゚ー゚ )+( ゚ー゚ )]+ (( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ]+(( ゚ー゚ ==3) +'_') [( ゚ー゚ ) - ( ゚ Θ ゚ )]+( ゚ Д ゚ ) ['c']+(( ゚ Д ゚ )+'_') [( ゚ー゚ )+( ゚ー゚ )]+ ( ゚ Д ゚ ) ['o']+ (( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ];( ゚ Д ゚ ) ['_'] =(o^_^o) [ ゚ o ゚ ] [ ゚ o ゚ ];( ゚ ε ゚ )=(( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ]+ ( ゚ Д ゚ ). ゚ Д ゚ノ +(( ゚ Д ゚ )+'_') [( ゚ー゚ ) + ( ゚ー゚ )]+(( ゚ー゚ ==3) +'_') [o^_^o - ゚ Θ ゚ ]+(( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ]+ ( ゚ ω ゚ノ +'_') [ ゚ Θ ゚ ]; ( ゚ー゚ )+=( ゚ Θ ゚ ); ( ゚ Д ゚ )[ ゚ ε ゚ ]='\\'; ( ゚ Д ゚ ). ゚ Θ ゚ノ =( ゚ Д ゚ + ゚ー゚ )[o^_^o -( ゚ Θ ゚ )];(o ゚ー゚ o)=( ゚ ω ゚ノ +'_')[c^_^o];( ゚ Д ゚ ) [ ゚ o ゚ ]='\"';( ゚ Д ゚ ) ['_'] ( ( ゚ Д ゚ ) ['_'] ( ゚ ε ゚ +( ゚ Д ゚ )[ ゚ o ゚ ]+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ((o^_^o) - ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+(( ゚ー゚ ) + ( ゚ Θ ゚ ))+ (c^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ー゚ )+ ((o^_^o) - ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ Θ ゚ )+ (c^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ (( ゚ー゚ ) + (o^_^o))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+(( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ー゚ )+ (c^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ Θ ゚ )+ ((o^_^o) - ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ ) [ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ((o^_^o) +(o^_^o))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )a+ ( ゚ー゚ )+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ ) [ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) - ( ゚ Θ ゚ ))+ (o^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ (o^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ((o^_^o) - ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ ) [ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ (c^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ( ゚ー゚ )+ ( ゚ Д ゚ ) [ ゚ ε ゚ ]+( ゚ー゚ )+ ((o^_^o) - ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+(( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ )[ ゚ o ゚ ]) ( ゚ Θ ゚ )) ('_'); 顔文字JavaScript JS with emoticons aaencode - http://utf-8.jp/public/aaencode.html
7
質問 Question
8
質問 : Web技術、好きですか? Q. Do you love web technologies?
9
クロスサイトスクリプティング SQLインジェクション CSRF HTTPレスポンス分割 オープンリダイレクタ HTTPヘッダインジェクション セッションハイジャック パストラバーサル リモートファイルインクルード DoS OSコマンドインジェクション メモリリーク バッファオーバーフロー 強制ブラウズ セッション固定攻撃 LDAPインジェクション XPathインジェクション 書式文字列攻撃
10
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Web技術、好きですか? 「はい」に挙手した人 かなり打たれ強い or 攻撃者
12
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5時代のWebアプリ 次々とリリースされるブラウザ 多数の新しい要素と属性 canvas, video, audio, input… 多数の新しいAPI Web Sockets, Web Storage, XHR Lv.2… 最適化されたJavaScriptエンジン 高速化された描画エンジン どのブラウザにどの機能が実装されてい るのか把握できない
13
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 次々とリリースされるブラウザ 678 2001 20032004 2006200720082009 134 5910 3.5 3.6 3.01.52.0 678 2 4 1 2 3 20102005 1.0 5 20112012 9 10 23 5 11 12 6
14
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5の新機能 マルチメディアのサポート... 文書構造を表す要素... フォームの拡張... JavaScript API Web Workers, WebSocket, File... その他…
15
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5時代のWebアプリ HTML5時代のブラウザ 高速化、高機能化 実行コードのブラウザ上へのシフト ネイティブアプリからWebアプリへ サーバ側で実行されていた処理がブラウザの JavaScript上へ 攻撃もクライアントサイドへシフト JavaScript上の問題点の増加 XSSやCSRFなどの比重が増加
16
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5時代のWebアプリ 攻撃もクライアントサイドへシフト JavaScriptを通じた攻撃の比重が増加 XSSのリスクも増加 多くの点から見て、XSS 脆弱性の危険性 はバッファ オーバーフローに匹敵します。 ” “ セキュリティに関するブリーフィング : Web に対する SDL の適用 http://msdn.microsoft.com/ja-jp/magazine/cc794277.aspx
17
そもそもXSSって? →簡単におさらい
18
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい 対象 動的にHTMLを生成するWebアプリ 問題 攻撃者が用意したスクリプトがHTML内に挿 入される 対策 HTMLを生成する時点でエスケープ
19
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい http://shop.example.com/ ?item=">... http://shop.example.com/ ?item=">... GET /?item=">... <input type="text" value="">... <input type="text" value="">... HTMLを生成するときの エスケープ漏れ HTMLを生成するときの エスケープ漏れ 被害者 攻撃者 オンラインショップなど
20
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい 被害者 攻撃者 オンラインショップなど http://shop.example.com/ ?item=">... http://shop.example.com/ ?item=">... <input type="text" value="">... <input type="text" value="">... GET /?item=">...
21
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい Subject: test mail... Subject: test mail... HTMLを生成するときの エスケープ漏れ HTMLを生成するときの エスケープ漏れ 被害者 攻撃者 Webメールなど Subject: test mail... Subject: test mail...
22
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい HTMLを生成するときの エスケープ漏れ HTMLを生成するときの エスケープ漏れ 被害者 攻撃者 Webメールなど Subject: test mail... Subject: test mail...
23
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい 対象 動的にHTMLを生成するWebアプリ 問題 攻撃者が用意したスクリプトがHTML内に挿 入される 対策 HTMLを生成する時点でエスケープ
24
大原則 HTMLを生成する時点で エスケープ って何だっけ? → おさらい
25
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTMLを生成する時点でエスケープ! XSSおさらい < > < → < > → > " → " ' → ' & → & < → < > → > " → " ' → ' & → & データ 処理 ユーザ HTML生成
26
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 エスケープの例外 href、src等のURLの動的生成 http以外のスキームに注意 JavaScript内の動的生成 JS内の文字列リテラルはHTMLとは異なるエ スケープ <iframe src="data:text/html;base64, PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K"> <iframe src="data:text/html;base64, PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K"> var s=" alert(1)//"; var s=" alert(1)//";
27
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSおさらい HTMLを生成する時点でエスケープ コンテキスト(文脈)に応じたエスケープ コンテキストが入れ子になっているときはエス ケープも入れ子に。 …');"> URLの動的生成 href、src等はhttp,https限定とする
28
やってはいけない XSS対策
29
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 入力時のサニタイズ やってはいけないXSS対策 < > 処理 ユーザ HTML生成 データ < → < > → > " → " ' → ' & → & < → < > → > " → " ' → ' & → & サニタイズ
30
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 やってはいけない:入力時のサニタイズ 入力時点でのデータの加工はプログラム 規模が大きくなると破綻する 「サニタイズ」という語が本来の意味を 失って意味不明になっている 続きはWebで サニタイズ言うな 検索
31
XSSの種類
32
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類 反射型XSS / Type-1 ユーザからの送信内容をそのまま表示 XSSフィルタ等である程度防御 お問い合わせフォーム、サイト内検索 持続型XSS / Type-2 攻撃者のスクリプトがサーバ内で保持 掲示板、Webメール
33
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類 反射型XSS / Type-1 ユーザからの送信内容をそのまま表示 XSSフィルタ等である程度防御 お問い合わせフォーム、サイト内検索 持続型XSS / Type-2 攻撃者のスクリプトがサーバ内で保持 掲示板、Webメール GET /?item=">...... ※ GET だけでなく POST もあり得る
34
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類
35
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類
36
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類 XSSフィルターはリクエストとレスポンス 両方に同じスクリプトが含まれると反応
37
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類 反射型XSS / Type-1 ユーザからの送信内容をそのまま表示 XSSフィルタ等である程度防御 お問い合わせフォーム、サイト内検索 持続型XSS / Type-2 攻撃者のスクリプトがサーバ内で保持 掲示板、Webメール
38
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類 反射型XSS / Type-1 ユーザからの送信内容をそのまま表示 XSSフィルタ等である程度防御 お問い合わせフォーム、サイト内検索 持続型XSS / Type-2 攻撃者のスクリプトがサーバ内で保持 掲示板、Webメール Subject: test... Subject: test... Subject: test... Subject: test...
39
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類 持続型XSS / Type-2 2006年6月 mixi「こんにちはこんにちは」 2007年8月 Twitter「こんにちはこんにち は」 2010年9月 Twitter
40
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSの種類 反射型XSS / Type-1 ユーザからの送信内容をそのまま表示 XSSフィルタ等である程度防御 お問い合わせフォーム、サイト内検索 持続型XSS / Type-2 攻撃者のスクリプトがサーバ内で保持 掲示板、Webメール DOM based XSS / Type-0 JavaScriptが引き起こす サーバ側のHTML生成には問題なし //http://example.jp/# alert(1) div.innerHTML = location.hash; //http://example.jp/# alert(1) div.innerHTML = location.hash;
41
DOM based XSS
42
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS JavaScriptが引き起こすXSS サーバ側のHTML生成時には問題なし JavaScriptによるHTMLレンダリング時の問題 JavaScriptの利用に合わせて増加 //http://example.jp/# alert(1) div.innerHTML = location.hash; //http://example.jp/# alert(1) div.innerHTML = location.hash;
43
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS location.hashを使ったXSSの場合、サーバ側に攻撃の 詳細が残らない
44
ここまでXSSの復習です!
45
HTML5が生む脆弱性
46
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性 Cross-Site Scripting(XSS) 要素、属性、イベントが増えている Cross-Document Messaging(XDM) クロスドメインでのドキュメント間通信 XMLHttpRequest(XHR) Lv.2 クロスドメインでの読み込み Ajaxデータを利用した攻撃 XSS、データの盗み見
47
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性 Cross-Site Scripting(XSS) 要素、属性、イベントが増えている Cross-Document Messaging(XDM) クロスドメインでのドキュメント間通信 XMLHttpRequest(XHR) Lv.2 クロスドメインでの読み込み Ajaxデータを利用した攻撃 XSS、データの盗み見
48
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSS これまでの間違ったXSS対策 危険そうな要素を検出 onXXX、hrefなどの名称の属性を検出 これまで仮にこの方法で網羅できていた としても …
49
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSS HTML5で多数の要素、属性、イベントが 導入
50
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSS いわゆる「ブラックリスト」での対応に 漏れ そもそもブラックリスト方式は無理がある 「HTML生成時にエスケープ」の原則 HTML5と関係なくXSSを防げる X //http://html5sec.org/#72 X //http://html5sec.org/#72
51
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS DOM based XSSは増えている JavaScriptの大規模化に伴い増加 サーバ側での対策と原則は同じ HTML生成時にエスケープ URL生成時はhttp(s)のみ backgroundImageへの代入やイベントハ ンドラの動的生成は避ける
52
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS HTML生成時にエスケープ むしろtextNodeを使おう! div.innerHTML = s.replace( /&/g, "&" ).replace( /</g, "<" ).replace( />/g, ">" ).replace( /"/g, """ ).replace( /'/g, "'" ); div.innerHTML = s.replace( /&/g, "&" ).replace( /</g, "<" ).replace( />/g, ">" ).replace( /"/g, """ ).replace( /'/g, "'" ); div.appendChild( document.createTextElement( s ) ); div.appendChild( document.createTextElement( s ) );
53
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS URL生成時はhttp(s)のみ オープンリダイレクタを発生させないよう 同一ホストに制限 if( url.match( /^https?:\/\// ) ){ a.setAttribute( "href", url ); } if( url.match( /^https?:\/\// ) ){ a.setAttribute( "href", url ); } var base = location.protocol + "//" + location.host + "/"; if( url.substring( 0, base.length ) == base ){ location.href = url; } var base = location.protocol + "//" + location.host + "/"; if( url.substring( 0, base.length ) == base ){ location.href = url; }
54
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 DOM based XSS if( url.match( /^https?:\/\// ) ){ var elm = docuement.createElement( "a" ); elm.appendChild( document.createTextNode( url ) ); elm.setAttribute( "href", url ); div.appendChild( elm ); } if( url.match( /^https?:\/\// ) ){ var elm = docuement.createElement( "a" ); elm.appendChild( document.createTextNode( url ) ); elm.setAttribute( "href", url ); div.appendChild( elm ); } // bad code div.innerHTML = ' ' + url + ' '; // bad code div.innerHTML = ' ' + url + ' ';
55
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性 Cross-Site Scripting(XSS) 要素、属性、イベントが増えている Cross-Document Messaging(XDM) クロスドメインでのドキュメント間通信 XMLHttpRequest(XHR) Lv.2 クロスドメインでの読み込み Ajaxデータを利用した攻撃 XSS、データの盗み見
56
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XDM Cross-Document Messaging ブラウザのwindow/iframe間で相互に通信
57
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XDM Cross-Document Messaging // メッセージ送信側 iframe1.contentWindow.postMessage( " メッセージ " ) // メッセージ送信側 iframe1.contentWindow.postMessage( " メッセージ " ) // メッセージ受信側 (iframe 内に表示 ) window.onmessage = function( e ){ if( e.origin == "http://example.jp/" ){ alert( e.data ); } // メッセージ受信側 (iframe 内に表示 ) window.onmessage = function( e ){ if( e.origin == "http://example.jp/" ){ alert( e.data ); } 正規の相手以外と通信しないようにoriginを必ず確認する
58
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性 Cross-Site Scripting(XSS) 要素、属性、イベントが増えている Cross-Document Messaging(XDM) クロスドメインでのドキュメント間通信 XMLHttpRequest(XHR) Lv.2 クロスドメインでの読み込み Ajaxデータを利用した攻撃 XSS、データの盗み見
59
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2 XMLHttpRequest かつては同一オリジンへのリクエストしかで きなかった プロトコル + ホスト + ポート var xhr = new XMLHttpRequest(); xhr.open( "GET", "http://example.jp/", true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ alert( xhr.responseText ); } xhr.send( null ); var xhr = new XMLHttpRequest(); xhr.open( "GET", "http://example.jp/", true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ alert( xhr.responseText ); } xhr.send( null );
60
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2 XMLHttpRequest 現在はクロスドメインでのリクエストが可能 GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ HTTP/1.1 200 OK Access-Control-Allow-Origin: * GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ HTTP/1.1 200 OK Access-Control-Allow-Origin: * HTML
61
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2 XHRを利用する側は、任意ドメインから のデータを読まないようにチェック // bad code: http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ div.innerHTML = xhr.responseText; } xhr.send( null ); // bad code: http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ div.innerHTML = xhr.responseText; } xhr.send( null ); http://example.jp/#http://evil.example.jp/ などの指定で任意コンテンツを挿入可能
62
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2 XHRを利用する側は、任意ドメインから のデータを読まないようにチェック // bad code: http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ div.innerHTML = xhr.responseText; } xhr.send( null ); // bad code: http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true ); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ div.innerHTML = xhr.responseText; } xhr.send( null ); http://example.jp/#http://evil.example.jp/ などの指定で任意コンテンツを挿入可能
63
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2 XHRを利用する側は、任意ドメインから のデータを読まないようにチェック // http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); if( url.match( /^\/\w/ ) ){ var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true );... } // http://example.jp/#/foo/bar.txt var url = location.hash.substring(1); if( url.match( /^\/\w/ ) ){ var xhr = new XMLHttpRequest(); xhr.open( "GET", url, true );... }
64
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2 サーバ側:特定の相手にのみ応答を許可 サーバ側はリクエストのOriginヘッダを見て 相手を判別してはいけない Originヘッダは偽装されている可能性がある。 GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ HTTP/1.1 200 OK Access-Control-Allow-Origin: htp://base.example.jp GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ HTTP/1.1 200 OK Access-Control-Allow-Origin: htp://base.example.jp リクエスト レスポンス
65
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2 サーバ側:特定の相手にのみ応答を許可。 JSで明示的に指定した場合のみCookieが送 信される GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ Cookie: sessionid=A251BBCA HTTP/1.1 200 OK Access-Control-Allow-Origin: htp://base.example.jp Access-Control-Allow-Credentials: true GET / HTTP/1.1 Host: another.example.jp Origin: http://base.example.jp/ Cookie: sessionid=A251BBCA HTTP/1.1 200 OK Access-Control-Allow-Origin: htp://base.example.jp Access-Control-Allow-Credentials: true リクエスト レスポンス xhr.withCredentials = true; // JavaScript 内
66
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XHR Lv.2 サーバ側:特定の相手にのみ応答を許可。 リクエストヘッダに「秘密の情報」を含める サーバ側はリクエストヘッダ内の情報を確認 して正規の通信相手か判断 クロスドメインでのsetRequestHeaderは 癖があるので注意 事前にOPTIONS要求が発行(preflight) https://developer.mozilla.org/en/http_access_control xhr.setRequestHeader( "X-Secret-Key", "A251BBCA" );
67
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性 Cross-Site Scripting(XSS) 要素、属性、イベントが増えている Cross-Document Messaging(XDM) クロスドメインでのドキュメント間通信 XMLHttpRequest(XHR) Lv.2 クロスドメインでの読み込み Ajaxデータを利用した攻撃 XSS、データの盗み見
68
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃 Ajaxでの利用増加 HTML5とは直接は関係ない Ajaxデータを利用したXSS Ajaxでやり取りされるデータ(JSON,text, csv etc..)を直接ブラウザ上で開いたときに XSS Ajaxデータの盗み見 機密情報を含むAjaxデータを受動的攻撃によ り攻撃者が盗み見る
69
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃 Ajaxでの利用増加 HTML5とは直接は関係ない Ajaxデータを利用したXSS Ajaxでやり取りされるデータ(JSON,text, csv etc..)を直接ブラウザ上で開いたときに XSS Ajaxデータの盗み見 機密情報を含むAjaxデータを受動的攻撃によ り攻撃者が盗み見る
70
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS IEのContent-Type無視 HTMLではないものがHTMLに昇格して XSS 例えばtext/plain
71
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS IEは最終的に「ファイルタイプ」に基づいて コンテンツを処理する Content-Type 以外にも様々な要因から ファイルタイプを決定 文書化されていない複雑なメカニズム 「ファイルのダウンロードダイアログで表示され るファイル名の命名規則」 http://support.microsoft.com/kb/436153/ja ファイルタイプ決定のメカニズム解明に近づく唯一のドキュメント
72
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS ファイルタイプの決定因子 "Content-Type" HTTPレスポンスヘッダ "X-Content-Type-Option" HTTPレスポ ンスヘッダ Windowsレジストリにおける関連付け IEの設定:"拡張子ではなく、内容によって ファイルを開く" URL自身 コンテンツそのもの
73
IEにおけるファイルタイプ決定のメカニズム 73 Y N Y N N Y 有効 無効 YN NYYN YN Content-Type がレジストリに登録されている ? [ HKEY_CLASSES_ROOT\MIME\Database\Content Type ] ファイルタイプを仮決定 外部プラグイン / アプリが必要 ? IE8+ && "X-Content-Type-Options:nosniff"? コンテンツを sniff しファイルタイプを決定 URL の拡張子が ".cgi" または ".exe" または "/" ? e.g. http://utf-8.jp/a.cgi?abcd, http://utf-8.jp/foo/ 外部プラグイン / アプリが必 要 ? プラグインを起動またはダウン ロード 「拡張子ではなく、内容に よってファイルを開く」設定 値 仮決定 した ファイルタイプを使用 IE8+ && "X-Content-Type-Options:nosniff"? 仮決定したファイルタイプを使用 QUERY_STRING からファイルタイプを 仮決定 プラグインを起動 またはダウンロー ド コンテンツを sniff し ファイルタイプを決 定 コンテンツを sniff し ファイルタイプを決 定 外部プラグイン / アプリが必要 ? URL の拡張子からファイルタイプを 仮決定 ダウンロー ド プラグインを起動 またはダウンロー ド Yosuke HASEGAWA http://utf-8.jp/ ※これ以外にも例外的な挙動が多数あり
74
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS ファイルタイプ決定のメカニズムは、と にかく複雑すぎる! そもそも例外的な挙動が多い いつのまにか挙動が変化していることも多い Microsoft自身も挙動を把握しきれていない のでは
75
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS XSS実例 https://www.microsoft.com/en-us/homepage/ bimapping.js/a.html?v= alert(1) &k... HTTP/1.1 200 OK Content-Type: text/javascript; charset=utf-8 Date: Wed, 22 Jun 2011 13:53:37 GMT Content-Length: 2092 var alert(1) ={"Webtrends":{"enabled":true,"sett ings":{"interactiontype":{"0":true,"1":true,"2":true,"3":true,"4":t rue,"5":true,"6":true,"7":true,"8":true,"9":true,"10":true,"11":tr ue,"12":true,"13".... HTTP/1.1 200 OK Content-Type: text/javascript; charset=utf-8 Date: Wed, 22 Jun 2011 13:53:37 GMT Content-Length: 2092 var alert(1) ={"Webtrends":{"enabled":true,"sett ings":{"interactiontype":{"0":true,"1":true,"2":true,"3":true,"4":t rue,"5":true,"6":true,"7":true,"8":true,"9":true,"10":true,"11":tr ue,"12":true,"13".... "text/javascript" はレジストリに未登録
76
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS XSS実例
77
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用したXSS AjaxコンテンツによるXSSは以下のよう な状況で発生しやすい JSON - JSON文字列内 {"text" :"..." } JSONP - callback名 http://example.com/?callback=... text, CSV - そもそもエスケープできない 対策の話はあとで。
78
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃 Ajaxでの利用増加 HTML5とは直接は関係ない Ajaxデータを利用したXSS Ajaxでやり取りされるデータ(JSON,text, csv etc..)を直接ブラウザ上で開いたときに XSS Ajaxデータの盗み見 機密情報を含むAjaxデータを受動的攻撃によ り攻撃者が盗み見る
79
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータの盗み見 JavaScriptとして解釈可能なAjaxデータ が狙われやすい JavaScriptのsrcとして読み込む {"from" : "a@example.com"} JSON
80
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータの盗み見 様々な手法でブラウザごとにJSONデータ を奪取 JSON Array Hijacking for Android JSON Hijacking for IE JSON以外にもCSVなどは狙いやすい
81
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータの盗み見 様々な手法でブラウザごとにJSONデータ を奪取 JSON Hijacking for Android JSON Hijacking for IE JSON以外にもCSVなどは狙いやすい
82
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Array Hijacking for Android Androidでは、古いJSON Hijackingの 手法がまた通用する PC用ブラウザでは2008年頃にはすでに根絶 Android 2.2, 2.3で確認 property setter の再定義 機密情報を含むJSON配列がターゲット
83
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Array Hijacking for Android [ { "name" : "alice", "mail" : "alice@example.com" }, { "name" : "bob", "mail" : "bob@example.jp" }, ] [ { "name" : "alice", "mail" : "alice@example.com" }, { "name" : "bob", "mail" : "bob@example.jp" }, ] var s = ""; Object.prototype.__defineSetter__( "mail", function( val ) { s += "mail:" + val + "\n"; } ); Object.prototype.__defineSetter__( "name", function( val ) { s += "name:" + val + "\n"; } ); var s = ""; Object.prototype.__defineSetter__( "mail", function( val ) { s += "mail:" + val + "\n"; } ); Object.prototype.__defineSetter__( "name", function( val ) { s += "name:" + val + "\n"; } ); 攻撃対象となるJSON : http://example.jp/target.json 攻撃者の作成した罠ページ
84
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータの盗み見 様々な手法でブラウザごとにJSONデータ を奪取 JSON Hijacking for Android JSON Hijacking for IE JSON以外にもCSVなどは狙いやすい
85
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE IE6,IE7では特定条件下でJSONの奪取が 可能 攻撃者がJSON内に文字列を挿入可能 機密情報を含むJSONがターゲット
86
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] 攻撃者によって挿入 ターゲットとなるJSON : http://example.com/newmail.json
87
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE [ { "name" : "abc"}];var t=[{"":"", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] [ { "name" : "abc"}];var t=[{"":"", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] ターゲットとなるJSON : http://example.com/newmail.json
88
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE alert( t[ 1 ].name + t[ 1 ].mail ); alert( t[ 1 ].name + t[ 1 ].mail ); 攻撃者は罠ページを準備して誘導 [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] ターゲットとなるJSON http://example.com/newmail.json [ { "name" : "abc"}];var t=[{"":"", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] [ { "name" : "abc"}];var t=[{"":"", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ]
89
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE 攻撃者の準備した罠ページ Content-Type: application/json; charset=utf-8 [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] Content-Type: application/json; charset=utf-8 [ { "name" : "abc+MPv/fwAiAH0AXQA7-var t+AD0AWwB7ACIAIg-:+ACI-", "mail" : "hasegawa@utf-8.jp" }, { "name" : "John Smith", "mail" : "john@example.com" } ] 攻撃者対象のJSON こっちが優先される
90
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 JSON Hijacking for IE IE6,IE7はHTTPレスポンスヘッダより 要素のcharset属性を優先 IE8では修正されている 2008年10月に報告したが修正されない
91
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃 Ajaxデータを利用した攻撃 Ajaxデータを利用したXSS Ajaxでやり取りされるデータ(JSON,text, csv etc..) を直接ブラウザ上で開いたときにXSS Ajaxデータの盗み見 機密情報を含むAjaxデータを受動的攻撃により攻撃者 が盗み見る 対策 XMLHttpRequest以外からのアクセスを弾く X-Content-Type-Options: nosniffヘッダ エスケープ(XSS対策)、POST only(盗み見対策)など も次善策として…
92
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃への対策 XMLHttpRequest以外からのアクセスを 弾く Ajaxデータは通常、XHRからのリクエスト を想定している XHR以外からアクセスさせないことでXSSお よび盗み見を防ぐことができる
93
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃への対策 XMLHttpRequest以外からのアクセスを 弾く リクエストヘッダに特定文字列を入れる GET http://example.jp/foo.json HTTP/1.1 Host: example.jp Connection: keep-alive X-Request-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:8.0) GET http://example.jp/foo.json HTTP/1.1 Host: example.jp Connection: keep-alive X-Request-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:8.0) jQuery、prototype.js だと X-Request-With は自動挿入される
94
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃への対策 XMLHttpRequest以外からのアクセスを 弾く リクエストヘッダに特定文字列を入れる GET http://example.jp/foo.json HTTP/1.1 Host: example.jp Connection: keep-alive X-Request-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:8.0) GET http://example.jp/foo.json HTTP/1.1 Host: example.jp Connection: keep-alive X-Request-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:8.0) jQuery、prototype.js だと X-Request-With は自動挿入される
95
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Ajaxデータを利用した攻撃への対策 X-Content-Type-Optoins:nosniff レスポンスヘッダで応答 IE8以降でHTML扱いされることがなくなる Content-Type: application/json; charset=utf-8 X-Content-Type-Options: nosniff Content-Type: application/json; charset=utf-8 X-Content-Type-Options: nosniff
96
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 HTML5が生む脆弱性:まとめ Cross-Site Scripting(XSS) これまで通りの対策の徹底 Cross-Document Messaging(XDM) originによる通信相手の確認 XMLHttpRequest(XHR) Lv.2 クライアント/サーバ側とも通信相手を確認 Ajaxデータを利用した攻撃 XMLHttpRequestからの要求のみに限定 X-Content-Type-Options:nosniffヘッダの 付与
97
新しい防御機構
98
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 新しい防御機構 様々な防御機構がブラウザに追加 XSSフィルター / XSS Auditor X-Content-Type-Options クリックジャッキング対策 Content Security Policy
99
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 XSSフィルター / XSS Auditor 反射型のXSSをほぼ軽減 IE8+、Chrome、Safari に搭載 レスポンスヘッダに の指定でフィルタを停止可能 X-XSS-Protection: 0
100
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 X-Content-Type-Options Content-Typeに従ってコンテンツを開 く指定 コンテンツ内の "sniff" を行わなくなる IE8+で有効 レスポンスヘッダに以下をつける 原則、全てのコンテンツにつけておくべ き。 X-Content-Type-Options: nosniff
101
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 クリックジャッキング対策 クリックジャッキング 標的サイトを透明に重ね、意図しないクリッ ク等を引き起こす攻撃 透明表示の 標的サイト 罠サイト
102
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 クリックジャッキング対策 frameおよびiframeでの表示を禁止する IE8+、Chrome、Safari、Opera、 Firefoxの各ブラウザが対応 レスポンスヘッダで指定 // 全ての埋め込みを禁止 X-Frame-Options: DENY // 全ての埋め込みを禁止 X-Frame-Options: DENY // 同一オリジン以外からの埋め込みを禁止 X-Frame-Options: SAMEORIGIN // 同一オリジン以外からの埋め込みを禁止 X-Frame-Options: SAMEORIGIN http://www.jpcert.or.jp/ed/2009/ed090001.pdf
103
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 Content Security Policy Content-Security-Policy(CSP) 等のソースを限定するための 指令 レスポンスヘッダで指定 // 画像以外を同一ドメインに制約 Content-Security-Policy: default-src 'self'; image-src * // 画像以外を同一ドメインに制約 Content-Security-Policy: default-src 'self'; image-src * // example.jp の script src を許可 Content-Security-Policy: default-src 'self'; script-src example.jp // example.jp の script src を許可 Content-Security-Policy: default-src 'self'; script-src example.jp http://www.w3.org/TR/2012/WD-CSP-20120710/ http://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html
104
質問タイム
105
NetAgent http://www.netagent.co.jp/ security-mikan techtalk #5 質問 hasegawa@utf-8.jp hasegawa@netagent.co.jp @hasegawayosuke http://utf-8.jp/
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.