--
このメールは Google グループのグループ「「体系的に学ぶ 安全なWebアプリケーションの作り方」サポートML」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには wasbook-reade...@googlegroups.com にメールを送信してください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/04992b62-f39a-489a-8ce9-c0529dba5c13n%40googlegroups.com にアクセスしてください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/fc5924a4-6dc3-47d1-bd97-154fb4839176n%40googlegroups.com にアクセスしてください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/dbd59fe2-eb9b-485d-8e1d-2bb5d44ca9ebn%40googlegroups.com にアクセスしてください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/3941d6a8-471d-4ff7-8412-4bb1cc3083e0n%40googlegroups.com にアクセスしてください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/44ba5e57-5e49-4e93-b162-c271bf1ad7e1n%40googlegroups.com にアクセスしてください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/86239280-c463-4e05-bf6e-a73f14d29c38n%40googlegroups.com にアクセスしてください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/6ac75d70-f413-4869-b18a-aa0cfda8a12en%40googlegroups.com にアクセスしてください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/2338566a-d701-4f8d-b705-c4e39b72e8fdn%40googlegroups.com にアクセスしてください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/55181b89-7910-42c8-b92a-71b45944eb00n%40googlegroups.com にアクセスしてください。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/ee04cd91-52d5-447d-938c-857c5f0bdb74n%40googlegroups.com にアクセスしてください。
徳丸様、いつもお世話になっております。
ご回答ありがとうございます。
プログラム(33-004a.php)をよく読んでみようと思います。
プログラムを下記文面に示します。
PHRにてOPTIONメソッド使用時
・Originヘッダがhttp://B
→ACAO、 ACAH、ACAMヘッダなどをhttpレスポンスに設定する
・Originヘッダがhttp://Bではない
→「このリクエストは継続できません」をhttpレスポンスに設定する
PHRにてOPTIONメソッド以外使用時
→「die(Invalid Request)」が実行される
→⑦httpリクエストはPOSTメソッド使用なのでdie関数が実行された
「33-004b.php」は上記に、
「httpリクエストにてPOSTメソッド使用時」のelse if文が追加されてるので、
「PHRあり(完成)」ではACAOヘッダがhttpレスポンスで返された、ということですね。
「33-004b.php」のACAMヘッダを見るとGETも許可されているので、
「httpリクエストにてGETメソッド使用時」のelse if文も追加しないと、エラーが発生すると感じました。
今回の例では、httpリクエストでGETメソッドは未使用なので問題なしと理解しております。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/6b7fb7c7-42ca-432b-bd57-bfc00b656ac5n%40googlegroups.com にアクセスしてください。
徳丸様、いつもお世話になっております。
ご回答ありがとうございます。大変勉強になります。
引き続き勉強を続けます。
CORS成立時のcookie送信についてですが、BにてwithCredentials=trueを記載すると、WEBブラウザからAへの httpリクエストにcookieが付与されます。
①
このcookieは、Bで発行されたものと認識してよろしいでしょうか?
②
①が正しい場合、BからWEBブラウザへのXMLHttpRequestの中身をOWASP ZAPで確認する方法はないでしょうか?
WEBブラウザ→AのhttpリクエストとB→WEBブラウザのXMLHttpRequestが、同じcookieを持っているのか確認したいです。
書籍に載っていたブレークポイントが使えますでしょうか?まだ検証前ですので帰宅後に試します。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/6d19d494-ce90-4989-8f3e-8b5d3130c13bn%40googlegroups.com にアクセスしてください。
徳丸様、いつもお世話になっております。
CORSの検証環境「プリフライトリクエスト(以下、PFR)なし」(以下、対象環境)についてです。
1
WEBブラウザはAPIサーバに対して
XMLHtpRequest(以下、XHR)を発言する直前に、XHRの内容(「content-type」が「application/json」になっている、など)を基にシンプルなリクエストではないと判断して、XHRに先立ってPFR発信要と判断する、という認識ですが合ってますでしょうか。
2
「1」が正しい場合、対象環境のようなタイトルが付けられているのはなぜでしょうか。
推測すると、PFRを受言したAPIサーバがCORSへッダ(Access-Control-Allow-Headersヘッダ、など)をhttpレスポンスに設定する仕様になっておらず、WEBブラウザがAPIサーバからhttpレスポンスを受信した際にCORSエラーを発生させるため、PFRなしではXHR発言まで処理が辿り着かない、という意味で対象環境のようなタイトルが付けられている、と思いました。
合っておりますでしょうか。
> 1 WEBブラウザはAPIサーバに対して
. XMLHtpRequest(以下、XHR)を発言する直前に、XHRの内容(「content-type」が「application/json」になっている、など)を基にシンプルなリクエストではないと判断して、XHRに先立ってPFR発信要と判断する、という認識ですが合ってますでしょうか。
はい、ご認識のとおりです。
> 2 「1」が正しい場合、対象環境のようなタイトルが付けられているのはなぜでしょうか。
これは演習環境において「33-003 :プリフライトリクエストなし」のようなタイトルがついていることに対するご質問かと思いますが、アプリケーション側でプリフライトリクエストの対応をしていない、という意図です。
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/adf022be-6573-4758-bede-7d04073a8199n%40googlegroups.com にアクセスしてください。
徳丸様、大変ご無沙汰しております。
少し仕事など人生に迷走しておりました。というか途中です。
ご回答ありがとうございます。
「2」の質問についてですが、ご回答頂いた通りです。
対象環境のタイトルである「プリフライトリクエストなし」は、
「アプリケーション側にてプリフライトリクエストに対応する仕様がなし」と理解しました。
今後ともよろしくお願い致します。
徳丸様、いつもお世話になっております。
新規スレッドの作成方法がわからず、このスレッドにて問合せ致します。
今回は質問というより、書籍の理解を進める中で気付いた点について、ご意見をお伺いしたく連絡致しました。
書籍および検証環境にて、CORSやCSRFなどの細部の動作を図解して学習してきましたが、俯瞰して見てみると結局どの部分にどのように作用してどのような問題を解決しているのか、サラッと説明できないことに気づきました。
そのため、それぞれのWEBセキュリティの仕組みの影響箇所がWEBブラウザなのか、サーバなのか、という軸で整理すると、それぞれのWEBセキュリティの役割や関係性を把握しやすくなるのではないかと感じました。
そこで、それぞれのWEBセキュリティを俯瞰するための整理として、リクエストからレスポンスまでの一連の流れをベースに、どの段階で何が起きているかを整理するための枠組みを作成してみました。
現時点で、各WEBセキュリティの仕組みとの対応付けはできておらず、今後のこの枠組みの上に整理していく前提です。
下記枠組みを作成した目的は、昨今よく発生しているセキュリティ攻撃の構成にて、断片的なWEBセキュリティの仕組みがどの範囲に影響しているのかを図解して整理することです。
これを明確化すると、細部の動作にもすんなり繋がるのではないか、と予想しております。
つきましては、お忙しい所大変恐れ入りますが、下記の枠組みがCORSやCSRFの理解補助として違和感がないかどうかご意見頂けますでしょうか。
整理の方向が合っていたら、PowerPointでスライド化し、さらに理解と整理を試みます。
何卒よろしくお願い致します。
⓪ ブラウザ→悪意のあるサイトにアクセス
① 悪意のあるサイト→ブラウザのレスポンス
(攻撃用リクエストを発生させる仕組みを提供)
②ブラウザでの処理
(Cookieをリクエストに付与可否を判断)
③ブラウザ→攻撃対象サイトへのリクエスト
(HTMLの仕様に従い、自動的にリクエストを生成・送信する)
④ 攻撃対象サイトでの処理
(リクエストを受け取り、認証・CSRF検証する主体)
⑤攻撃対象サイト→ブラウザへのレスポンス
(ブラウザにレスポンスを返す主体)
⑥ブラウザでの処理
(ブラウザがルールに従ってJavaScriptにレスポンス内容を渡すか判断)
⑦ ブラウザでの処理
(JavaScriptの実行可否をポリシーに基づいて判断する)
このディスカッションを表示するには、https://groups.google.com/d/msgid/wasbook-readers/4c72e092-3e6e-40b1-9a3a-c78957a1d728n%40googlegroups.com にアクセスしてください。