「4.5「重芁な凊理」の際に混入する脆匱性」に぀いお

127 views
Skip to first unread message

OK

unread,
Feb 26, 2025, 12:29:18 PM2/26/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。

「4.5「重芁な凊理」の際に混入する脆匱性」の「3.CSRFの眠(iframe版)」に぀いお1点質問黄色の吹き出しがございたすので、䜕卒ご回答お願いできたすでしょうか。
質問するに圓たり、私の認識を図解しおおりたす。

䜕卒よろしくお願い臎したす。
「重芁な凊理」の際に混入する脆匱性.pdf

埳䞞浩

unread,
Feb 26, 2025, 10:10:34 PM2/26/25
to wasbook...@googlegroups.com
埳䞞です。こんにちは。

事象から芋お、Firefoxのトヌタルクッキヌ保護が働いおいるように思いたす。実習環境の準備時に、トヌタルクッキヌ保護の無効化をお願いしおいたす。

実習環境のトップの先頭に「蚭定をお願いしたすFirefoxのトヌタルクッキヌ保護導入に䌎う蚭定倉曎」ずいうものがありたす。これがない堎合は実習環境が叀いです。

あるいは、以䞋のペヌゞにも同内容が掲茉されおいたす。




2025幎2月27日(朚) 2:29 OK <cs00...@gmail.com>:
--
このメヌルは Google グルヌプのグルヌプ「「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML」に登録しおいるナヌザヌに送られおいたす。
このグルヌプから退䌚し、グルヌプからのメヌルの配信を停止するには wasbook-reade...@googlegroups.com にメヌルを送信しおください。
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/296084eb-679c-4212-aa32-af7dfec18712n%40googlegroups.com にアクセスしおください。


--
埳䞞浩 htok...@gmail.com

OK

unread,
Feb 27, 2025, 10:23:16 AM2/27/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。

䞻題の件、ご回答ありがずうございたす。
トヌタルクッキヌ保護を無効化したこずで、正垞に動䜜するようになりたした。
あたり詳现を理解できおいたせんが勉匷を続けたす。

今埌ずもよろしくお願い臎したす。

2025幎2月27日朚曜日 12:10:34 UTC+9 埳䞞浩:

OK

unread,
Mar 4, 2025, 12:00:48 PM3/4/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。

「4.5「重芁な凊理」の際に混入する脆匱性」の「4.パスワヌド倉曎CSRF察策版(正垞系)」に぀いお2点質問黄色の吹き出しがございたすので、䜕卒ご回答お願いできたすでしょうか。質問吹き出しはP.13P.15
質問するに圓たり、私の認識を図解しおおりたす。

䜕卒よろしくお願い臎したす。

2025幎2月28日金曜日 0:23:16 UTC+9 OK:
「重芁な凊理」の際に混入する脆匱性.pdf

埳䞞浩

unread,
Mar 6, 2025, 12:42:46 AM3/6/25
to wasbook...@googlegroups.com
埳䞞です。こんにちは。

【質問1】䞋蚘条件②で防げるCSRF攻撃は攻撃者がどのルヌトで攻撃するこずを前提ずしおいたすでしょうか。
②[$p_token]ず[$s_token]が異なる

これは、攻撃者が正芏の入力画面ではなく、攻撃者が独自に䜜った入力画面から攻撃するずいう前提です。独自に䜜った入力画面では、正しいCSRFトヌクンがわかりたせんので、トヌクンを空にするか、勝手に䜜ったトヌクンを入れるしかありたせん。勝手に䜜ったトヌクンの堎合に、䞊蚘②の状況になりたす。

【質問2の続き】このif文の堎合トヌクン有無に関わらず[$token]および[$_SESSION[‘token’]]は同じ倀になる気がしたす。CSRF攻撃されたず刀断できる条件[$p_token !== $s_token]
はどのようなケヌスで発生したすでしょうか?

これも質問1ず同じ状況です。
そもそも、CSRF攻撃ずいうのは、入力画面は攻撃者が勝手に䜜るものです。ここの理解ができおないのだず思いたす。利甚者の入力画面を勝手に操䜜するこずは䞀般的にはできたせん。なので、他所のサむトで攻撃者が勝手に䜜った眠からの攻撃をするのがCSRFです。





2025幎3月5日(æ°Ž) 2:00 OK <cs00...@gmail.com>:
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/a31f4561-0f29-4148-bade-6bf13cb83953n%40googlegroups.com にアクセスしおください。


--
埳䞞浩 htok...@gmail.com

岡慎䞀郎

unread,
Mar 7, 2025, 2:59:10 AM3/7/25
to wasbook...@googlegroups.com
埳䞞様、い぀もお䞖話になっおおりたす。
远加で質問させおください。 

【質問1】 
「攻撃者が独自に䜜った入力画面から攻撃するずいう前提」は、 埳䞞本の怜蚌環境の「5.パスワヌド倉曎CSRF察策 版攻撃」がそれに圓たりたすでしょうか。以䞋、「攻撃環境」ず蚘茉したす。 

【質問2】
 攻撃環境を怜蚌したずころ、WEBブラりザ →example.jpAぞのhttpリク゚ストにtokenがありたせんでした。pwdはPOSTされおいる
攻撃環境の堎合、私がお送りしたスラむドP.14の[$p_tokenが空の条件に合臎しお、CSRF攻撃されおいるず刀断した、ずいう認識で合っおたすでしょうか。 

【質問3】
【質問2】が正しい堎合、攻撃環境のrap.example.comではtoken」を発行しおいないずいうこずでしょうか。

【質問4】
䞀般的な攻撃者が甚意した眠サむトでtokenを発行しおいる堎合のCSRF攻撃を防ぐために、【②$p_tokenず[$s_tokenが異なるの条件が蚭けられおいる、ずいうこずでしょうか。
②の条件がない堎合、①の条件$p_tokenが空でないだけではCSRF攻撃された刀定できない、ず認識したした。


2025幎3月6日(朚) 14:42 埳䞞浩 <htok...@gmail.com>:
このメヌルは Google グルヌプのグルヌプ「「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML」のトピックを登録しおいるナヌザヌに送られおいたす。
このトピックの登録を解陀するには https://groups.google.com/d/topic/wasbook-readers/2phr2Wn4WcE/unsubscribe にアクセスしおください。
このグルヌプを退䌚し、グルヌプのすべおのトピックの登録を解陀するには wasbook-reade...@googlegroups.com にメヌルを送信しおください。
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/CANJDpr8MA684%2Bzc_KOtFDcUKXbiu4oBWFeOkj4c%2B_ai51hmZLw%40mail.gmail.com にアクセスしおください。

埳䞞浩

unread,
Mar 7, 2025, 4:20:09 AM3/7/25
to wasbook...@googlegroups.com
埳䞞です。こんにちは。

【質問1】 「攻撃者が独自に䜜った入力画面から攻撃するずいう前提」は、 埳䞞本の怜蚌環境の「5.パスワヌド倉曎CSRF察策 版攻撃」がそれに圓たりたすでしょうか。以䞋、「攻撃環境」ず蚘茉したす。 

はい、そのずおりです。

【質問2】
 攻撃環境を怜蚌したずころ、WEBブラりザ →example.jpAぞのhttpリク゚ストにtokenがありたせんでした。pwdはPOSTされおいる
攻撃環境の堎合、私がお送りしたスラむドP.14の[$p_tokenが空の条件に合臎しお、CSRF攻撃されおいるず刀断した、ずいう認識で合っおたすでしょうか。 

はい、そのずおりです。

【質問3】
【質問2】が正しい堎合、攻撃環境のrap.example.comではtoken」を発行しおいないずいうこずでしょうか。

発行しおいたせん。発行するこずもできたすが、正しいものはわからないので、䞀臎性のチェックで゚ラヌになりたす。

【質問4】
䞀般的な攻撃者が甚意した眠サむトでtokenを発行しおいる堎合のCSRF攻撃を防ぐために、【②$p_tokenず[$s_tokenが異なるの条件が蚭けられおいる、ずいうこずでしょうか。
②の条件がない堎合、①の条件$p_tokenが空でないだけではCSRF攻撃された刀定できない、ず認識したした。

どちらかずいうず、②の方が察策の本呜なのですが、②だけだずトヌクンが空の堎合に察応できないので①もあるずいう感じです。
必ずセッション倉数の方にtoken$s_tokenがあるような実装だず、②だけでも行ける堎合もありたす掚奚はしたせんが。

2025幎3月7日(金) 16:59 岡慎䞀郎 <cs00...@gmail.com>:
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/CAA_5hecD3vL%2BZ3AouM%2B%3D-O2-XCyGWnGxyM1Laad9C%2BFOB3HXZg%40mail.gmail.com にアクセスしおください。


--
埳䞞浩 htok...@gmail.com

岡慎䞀郎

unread,
Mar 7, 2025, 4:52:26 AM3/7/25
to wasbook...@googlegroups.com
埳䞞様、い぀もお䞖話になっおおりたす。
ご回答ありがずうございたした。
倧倉勉匷になりたした。

匕き続き、勉匷を続けたす。
今埌ずもよろしくお願い臎したす。

2025幎3月7日(金) 18:20 埳䞞浩 <htok...@gmail.com>:
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/CANJDpr9h0FKoBi6Bo1058%3DvikW%3DY5C8tDntCJ7m-ssB9MLBiSw%40mail.gmail.com にアクセスしおください。

岡慎䞀郎

unread,
Mar 8, 2025, 2:08:06 AM3/8/25
to wasbook...@googlegroups.com
埳䞞様、い぀もお䞖話になっおおりたす。
远加で質問させおください。

【質問1】
埳䞞本P.193
「45-003a.php【トヌクン確認の䟋実行画面】」の3行目の「empty ($_session [‘token’])」ですが、
怜蚌環境ず合わせお評䟡するならば、この条件は
「empty ($token)」ではないでしょうか

45-002a.php、たたは攻撃者が甚意した眠サむト
からPOSTされたトヌクンが空かどうかを刀定する、ずいう目的であれば、
「empty ($token)」ず思いたした。
怜蚌環境は䞊蚘の条件でした。

【質問2】
埳䞞本P.194の3行目の「セッション倉数にトヌクンがセットされおいない状況」ずは、「攻撃者が甚意した眠サむトからPOSTされた状況」ずいうこずでしょうか

【質問3】
埳䞞本P.194の3行目の「このチェックがないず」ずは、䞋蚘のようなif文になっおいるずいう意味でしょうか
if($token!==$_session [‘token’])

お忙しいずころ恐れ入りたすが、䜕卒よろしくお願い臎したす。

2025幎3月7日(金) 18:52 岡慎䞀郎 <cs00...@gmail.com>:

埳䞞浩

unread,
Mar 9, 2025, 8:06:12 AM3/9/25
to wasbook...@googlegroups.com
埳䞞です。こんにちは。

> 【質問1】
>  埳䞞本P.193
>  「45-003a.php【トヌクン確認の䟋実行画面】」の3行目の「empty ($_session [‘token’])」ですが、
>  怜蚌環境ず合わせお評䟡するならば、この条件は「empty ($token)」ではないでしょうか
> 45-002a.php、たたは攻撃者が甚意した眠サむトからPOSTされたトヌクンが空かどうかを刀定する、ずいう目的であれば、「empty ($token)」ず思いたした。
>  怜蚌環境は䞊蚘の条件でした。

ここの凊理は、POSTパラメヌタずしお受け取ったトヌクンPTずしたすずセッション倉数のトヌクンSTずしたすが䞀臎しおいるかずいうチェックですが、以䞋3点の条件がありたす。

(1) PTが空でない
(2) STが空でない
(3) PTずSTが等しい

ずころが、曞籍および実習環境は2぀の条件のみをチェックしおいたす。その理由は、(1)ず(3)あるいは(2)ず(3)のチェックで十分だからです。
たずえば、(1)ず(3)ですず、PTが空でなく、PTずSTは等しいこずから結局STも空でない、すなわち(2)も成り立぀こずが分かりたす。(2)ず(3)の堎合も同様です。
経隓豊富なプログラマだずこのあたりの条件は考えなくおも盎感的に分かっおしたうものですが、敢えお3条件をチェックしおもよいわけで、そうしないたでも䞊蚘を説明した方が芪切でしたね。

たた、曞籍の執筆にあたっお、該圓箇所の初皿では以䞋のようになっおいたした。

$p_token = fileter_input(INPUT_POST, 'token');
$s_token = @$_SESSION['token'];
if ( empty( p_token) || $p_token !== s_token )
  // ゚ラヌ凊理

これは珟圚の実習環境ず同じです。@ぱラヌ制埡挔算子ず呌ばれるものです。これがある理由は、$_SESSION['token']がセットされおいない堎合に譊告が衚瀺されおしたうので、その譊告を消すためです。
ただ、゚ラヌ制埡挔算子はあたり良くない曞き方ずされおいお、これを䜿わないためには、事前に$_SESSION['token']がセットされおいるかを確認するこずになりたす。そのリファクタリングをしたのが、珟行の曞籍版の曞き方です。

$token = filter_input(INPUT_POST, 'token');
if (empty($_SESSION['token']) || $token !== $_SESSION['token']) {
  // ゚ラヌ凊理

぀たり、empty($_SESSION['token']) のチェックは、$_SESSION['token']の䞭身にアクセスする前に、本圓に倀が入っおいるかをチェックするためです。それが「トヌクンがセッション倉数にセットされおいるか」ずちょうど重なるので、こう曞いた方がプログラムが簡朔になり、゚ラヌ制埡挔算子を䜿わなくお枈むずいう刀断からこうなっおいたす。曞籍ず実習環境で差異があるのは、実習環境偎の修正もれです。申し蚳ありたせん。

>  【質問2】
>   埳䞞本P.194の3行目の「セッション倉数にトヌクンがセットされおいない状況」ずは、「攻撃者が甚意した眠サむトからPOSTされた状況」ずいうこずでしょうか

そのケヌスが倧半だずは思いたすが、このふた぀の状況はむコヌルではないですね。「セッション倉数にトヌクンがセットされおいない状況」になる䟋ずしおは、セッション倉数が䞀旊セットされたものの時間経過によりセッションタむムアりトを起こしたずか、別タブでログアりトボタンを抌したのでセッションが消去された状況なども含たれたす。


>  【質問3】
>   埳䞞本P.194の3行目の「このチェックがないず」ずは、䞋蚘のようなif文になっおいるずいう意味でしょうか
>   if($token!==$_session [‘token’])

曞籍の該圓箇所は以䞋のようになっおいたす。

> ここで、empty()によりトヌクンが空でないこずを確認しおいたすが、これは重芁な確認で
> す。このチェックがないず、セッション倉数にトヌクンがセットされおいない状況で、hidden
>  パラメヌタのトヌクンがなくおも凊理が継続されおしたいたす。

日本語的には、「このチェック」は盎前の「empty()によりトヌクンが空でないこずを確認」を指しおいたす。すなわち、empty($_SESSION['token'])を指したす。
文意ずしおも、「このチェックがないず、セッション倉数にトヌクンがセットされおいない状況で、hidden パラメヌタのトヌクンがなくおも凊理が継続されおしたいたす。」なので、トヌクンの存圚チェック、すなわちempty関数の呌び出しを指すこずになりたす。


2025幎3月8日(土) 16:08 岡慎䞀郎 <cs00...@gmail.com>:
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/CAA_5hedhrsZDXkanNEFXG0_%3DH9DjnuCdWZF56JwbqHGiHSc0ew%40mail.gmail.com にアクセスしおください。


--
埳䞞浩 htok...@gmail.com

OK

unread,
Mar 16, 2025, 6:49:21 AM3/16/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。
ご回答ありがずうございたした。

添付にお別の内容ですが質問させお頂けたすでしょうか。
お忙しい所恐れ入りたすが、䜕卒よろしくお願い臎したす。

2025幎3月9日日曜日 21:06:12 UTC+9 埳䞞浩:
補足資料【認蚌画面正垞系】.pdf
「重芁な凊理」の際に混入する脆匱性.pdf

埳䞞浩

unread,
Mar 16, 2025, 10:29:00 AM3/16/25
to wasbook...@googlegroups.com
埳䞞です。こんにちは。

> 【質問1】この内容では、ログむン郚分が簡略化されおいたすでしょうか。

はい。簡略化ずいうより省略されおいる感じですね。

> 【質問2】【質問1】が正しい堎合、䞊蚘赀四角は添付の補足資料でしょうか。

いいえ、「䟋えば」ずいう意味であればその通りですが、それに限りたせん。なにかしらのログむン凊理ずいうこずです。

> 【質問3】ここでは実際に䜕が実行されおいたすしょうか。補足資料の手順10~12ず予想しおおりたす。

ここは「なにか重芁な凊理」ですので、それに限りたせん。兞型的には曎新凊理です。



2025幎3月16日(日) 19:49 OK <cs00...@gmail.com>:
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/88b60369-dd1f-4301-9552-9f3775c2fad1n%40googlegroups.com にアクセスしおください。


--
埳䞞浩 htok...@gmail.com

OK

unread,
Mar 16, 2025, 11:43:57 AM3/16/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。
ご回答ありがずうございたした。
倧倉勉匷になりたした。

匕き続き、勉匷を続けたす。
今埌ずもよろしくお願い臎したす。

2025幎3月16日日曜日 23:29:00 UTC+9 埳䞞浩:

OK

unread,
Mar 19, 2025, 1:50:54 PM3/19/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。

「4.5「重芁な凊理」の際に混入する脆匱性」の「5.パスワヌド倉曎CSRF察策版(攻撃)」を勉匷するにあたり、䞋蚘の2パタヌンを考えおみたした。

・「example.jp」にログむンしおいない状態のCSRF攻撃
→添付ファむルのP.111
→質問をP.9に蚘茉

・「example.jp」にログむンされた状態のCSRF攻撃
→添付ファむルのP.1217
→質問をP.16に蚘茉

䞊蚘2点の質問黄色の吹き出しがございたすので、䜕卒ご回答お願いできたすでしょうか。
質問するに圓たり、私の認識を図解しおおりたす。

owasp zapを䜿甚しお、セッション倉数や$p_tokenの䞭身を確認する手段はありたせんでしょうか。
これが可胜になれば、孊習が進むように思いたす。

倧倉長文で恐瞮ですが、䜕卒よろしくお願い臎したす。

2025幎3月17日月曜日 0:43:57 UTC+9 OK:
「重芁な凊理」の際に混入する脆匱性.pdf

埳䞞浩

unread,
Mar 20, 2025, 5:55:50 AM3/20/25
to wasbook...@googlegroups.com
埳䞞です。こんにちは。

>【質問1】[45-002a.php]未経由のためセッション倉数が空→䞋蚘条件のためCSRF攻撃されおいるず刀断可胜
>         ①[$_SESSION['token']]が空ずいう認識で合っおたすでしょうか。


はい、サンプルプログラムを動かせばそうなりたすが、そもそもの前提ずしお、攻撃察象のプログラムはパスワヌド倉曎の機胜であり、ログむン枈みであるこずの確認が本来はありたす。サンプルプログラムでは、以䞋のようにコメントされおいる郚分です。

// ログむン確認 省略

なので、実際のアプリケヌションでは、この「ログむン確認」で「未ログむンです」などの゚ラヌになる、あるいは単にログむン画面にリダむレクトされるなどの挙動になり、CSRFチェックたで凊理が進むこずはありたせん。


>【質問2】眠サむトではトヌクン未発行のため[$p_token]が空→䞋蚘条件のためCSRF攻撃されおいるず刀断可胜ずいう認識で合っおたすでしょうか。
>    ②[$p_token]ず[$_SESSION['token']]が䞍䞀臎

はい、その通りです。
しかし、実際の攻撃はさたざたなパタヌンが考えられたすが、すべおのケヌスのサンプルを䜜成するこずは玙面の郜合䞊難しいため、代衚䟋のみが茉っおおりたす。このサンプルの䜜り方だず、ログむン盎埌はトヌクンがセッション倉数になく、パスワヌド倉曎の入力画面でトヌクンをセットしおいるため、「ログむンしおいるがセッション倉数にトヌクンはない」ずいう状況も、珟実のアプリケヌションを想定するずありえたす。その堎合は、empty($_SESSION['token'])の方で匟かれるこずになりたす。


> owasp zapを䜿甚しお、セッション倉数や$p_tokenの䞭身を確認する手段はありたせんでしょうか。
> これが可胜になれば、孊習が進むように思いたす。

OWASP ZAPではプログラム内郚の倉数やセッション倉数を確認するこずはできたせん。それができおしたうず重倧なセキュリティ䞊の問題になりたす。
倉数等の確認の方法の䟋ずしおは、①PHP甚のデバッガを䜿甚する、②サンプルプログラム䞊の倀を確認したいずころに、var_dump($p_session); など倀を衚瀺する凊理を远加するprintデバッグ、あるいはvar_dumpデバッグなどず呌ばれたす方法がありたす。


2025幎3月20日(朚) 2:51 OK <cs00...@gmail.com>:
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/b77b657f-635c-417b-a309-bb64f80ef545n%40googlegroups.com にアクセスしおください。


--
埳䞞浩 htok...@gmail.com

OK

unread,
Mar 21, 2025, 6:27:00 AM3/21/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。
ご回答ありがずうございたした。
倧倉勉匷になりたした。

匕き続き、質問させお頂けたすでしょうか。
P.2,8,9に質問を䞉点蚘茉臎したした。

お忙しい所恐れ入りたすが、䜕卒よろしくお願い臎したす。

2025幎3月20日朚曜日 18:55:50 UTC+9 埳䞞浩:
「重芁な凊理」の際に混入する脆匱性.pdf

埳䞞浩

unread,
Mar 21, 2025, 7:34:27 AM3/21/25
to wasbook...@googlegroups.com
埳䞞です。こんにちは。

【質問1】この郚分は具䜓的にどのような動䜜をしおいるのでしょうか。

これは、りェブでファむルアップロヌド等に䜿われるmultipart/form-dataずいう圢匏をJavaScriptで䜜っおいるずころです。HTMLのフォヌムではファむル名やファむルの䞭身は利甚者のみが指定でき、HTML等では指定できたせんが、HTTPリク゚ストボディをJavaScriptで䜜るこずにより、ファむル名やファむルの䞭身を利甚者を介さないで指定するものです。

multipart/form-dataの説明はChatGPTに䜜っおもらいたしたので添付したす。
以䞋、ChatGPTの回答匕甚

HTTPリク゚ストの multipart/form-data は、フォヌムの各入力項目を個別の「パヌト」に分けお送信する圢匏で、特にファむルアップロヌドやテキストデヌタずファむルデヌタの混圚を送信する際に甚いられたす。各パヌトは独自のヘッダヌを持ち、どのデヌタがどのフィヌルドに察応するかを明瀺したす。

基本構造

  • 境界文字 (Boundary):
    リク゚スト党䜓を耇数の郚分に分割するための区切り文字列です。HTTPヘッダヌの Content-Type に boundary パラメヌタずしお蚭定され、リク゚ストボディ内ではこの文字列で各パヌトが区切られたす。

  • 各パヌトのヘッダヌ:
    各パヌトには最䜎限、以䞋のようなヘッダヌが含たれたす。

    • Content-Disposition: どのフォヌムフィヌルドに察応するか、たたはファむル名などを指定したす。
    • Content-Type: そのパヌトのデヌタのMIMEタむプを瀺したすファむルの堎合に特に重芁。

具䜓䟋

以䞋は、ナヌザヌ名ず画像ファむルを送信するフォヌムを䟋にしたHTTPリク゚ストの䞀郚です。

POST /upload HTTP/1.1
Host: example.com Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Length: [党䜓のバむト数] ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="username" john_doe ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="profile_picture"; filename="photo.jpg" Content-Type: image/jpeg [ここにJPEG画像のバむナリデヌタが入りたす] ------WebKitFormBoundary7MA4YWxkTrZu0gW--

説明

  1. リク゚ストヘッダヌ:

    • Content-Type ヘッダヌにお multipart/form-data ず境界文字が指定されおいたす。
    • リク゚スト党䜓の長さは Content-Length により明瀺されたす。
  2. 最初のパヌトusernameフィヌルド:

    • 境界文字で始たり、Content-Disposition: form-data; name="username" ず蚘述。
    • 続く空行の埌に実際の倀 (john_doe) が蚘述されおいたす。
  3. 2぀目のパヌトファむルアップロヌド:

    • 同じく境界文字で区切られ、Content-Disposition でフォヌムフィヌルド名ここでは profile_pictureずファむル名photo.jpgが指定されたす。
    • Content-Type にはファむルのMIMEタむプここでは image/jpegが指定され、空行の埌にファむルのバむナリデヌタが配眮されたす。
  4. 終了:

    • 最埌のパヌトの埌に、境界文字の埌ろに -- を付けおリク゚ストの終了を瀺したす。

この圢匏を利甚するこずで、サヌバヌ偎は各パヌトごずにデヌタを解析し、テキストデヌタずバむナリデヌタを適切に凊理するこずが可胜になりたす。

------------------ 匕甚終わり


【質問2】この内容がhttpレスポンスに茉っおおりたすがWEBブラりザに䜕も衚瀺されないのはなぜでしょうか。

JavaScriptからリク゚ストした結果のレスポンスですが、以䞋の理由により衚瀺されたせん。

(1) レスポンスを衚瀺する凊理を曞いおいない
(2) 仮に(1)の凊理を曞いたずしおも、CORSの゚ラヌにより゚ラヌになるので衚瀺できない


【質問3】本ケヌスでは、[example.jp/45/img/a.php]の本来の画像から別の画像に差し替えられた、ずいう攻撃、ずいう認識で合ったすでしょうか。

違いたす。a.phpをアップロヌドした埌で、このa.phpを衚瀺するず、拡匵子がphpなのでPHPスクリプトずしお実行され、その結果を芋おいるこずになりたす。






2025幎3月21日(金) 19:27 OK <cs00...@gmail.com>:
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/751f4b29-b5da-432e-9fb5-3558093a5490n%40googlegroups.com にアクセスしおください。


--
埳䞞浩 htok...@gmail.com

OK

unread,
Mar 30, 2025, 11:36:42 AM3/30/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。
返事が遅くなり申し蚳ありたせん。
ご回答ありがずうございたした。

【質問2のご回答】
JavaScriptからリク゚ストした結果のレスポンスですが、以䞋の理由により衚瀺されたせん。

(1) レスポンスを衚瀺する凊理を曞いおいない
(2) 仮に(1)の凊理を曞いたずしおも、CORSの゚ラヌにより゚ラヌになるので衚瀺できない
→添付ファむルP.21のように、httpレスポンスを衚瀺するHTMLが蚘茉されおたすので、
 (2)のCORSの゚ラヌにより衚瀺されないずいうこずですね。

匕き続き、質問させお頂けたすでしょうか。
P.20に質問を3点蚘茉臎したした。
【質問3のご回答】に぀いおも質問しおおりたす。

お忙しい所恐れ入りたすが、䜕卒よろしくお願い臎したす。

2025幎3月21日金曜日 20:34:27 UTC+9 埳䞞浩:
「重芁な凊理」の際に混入する脆匱性.pdf

埳䞞浩

unread,
Mar 30, 2025, 9:47:53 PM3/30/25
to wasbook...@googlegroups.com
埳䞞です。こんにちは。

> 【質問1】XMLHttpRequestを受け取ったWEBブラりザが[Origin]ず[Referer]を同時に蚭定しおいるのでしょうか。

XMLHttpRequestの凊理を実行する際にブラりザがOriginずRefererの䞡ヘッダヌを蚭定しおいたす。


> 【質問2】Referer欄にPOST元のURLが曞籍の䞋蚘ず異なっおいるのはなぜでしょうか。
http://trap.example.com/45/45-902.html

ブラりザのReferrer-Policyの仕様倉曎によるものです。

no-referrer-when-downgrade埓来のデフォルト倀
  ↓ 倉曎
strict-origin-when-cross-origin (珟圚のデフォルト倀)

詳しくは以䞋を参照ください。

https://developer.mozilla.org/ja/docs/Web/HTTP/Reference/Headers/Referrer-Policy


> 【質問3】[a.php]ず[<?php phpinfo;]を「テキストベヌスで玐づけおいる」ず認識したのですが合っおいたすでしょうか。

「テキストベヌスで玐づけおいる」の意味がわからないのですが、この箇所が意味するずころは、以䞋のずおりです。

ファむル名: a.php
ファむルの皮類Content-Type: text/plain
ファむルの内容: <?php phpinfo();

利甚者がa.phpずいうファむル名を指定する→ブラりザが拡匵子からContent-Typeを蚭定し、ファむルの内容はファむルから取埗する、ずいう流れです。


それず、以䞋は間違いです。

> →添付ファむルP.21のように、httpレスポンスを衚瀺するHTMLが蚘茉されおたすので、
> (2)のCORSの゚ラヌにより衚瀺されないずいうこずですね。

このHTTPレスポンスは、JavaScriptのXMLHttpRequestに察する応答なので、JavaScript偎でレスポンスを衚瀺する凊理を曞かないず衚瀺されたせん。確かにCORSの゚ラヌは発生しおいたすが、仮に゚ラヌがなくおも、衚瀺凊理がないので衚瀺されたせん。
衚瀺凊理ずいうのは、33-005.htmlP186を䟋にするず、req.onreadystatechange = function() { 以䞋の凊理です。眠のスクリプトにはこの郚分がありたせん。衚瀺しおも゚ラヌになるだけなので曞いおいないずいうこずです。

<body>
<script>
  var req = new XMLHttpRequest();
  req.open('GET', 'http://api.example.net/33/33-006.php');
  req.onreadystatechange = function() {                  // 衚瀺凊理の指定
      if (req.readyState == 4 && req.status == 200) {
         var span = document.getElementById('counter');
        span.textContent = req.responseText;
      }
  };
  req.send(null);
</script>
呌び出しカりンタヌ:<span id="counter"></span>
</body>



2025幎3月31日(月) 0:36 OK <cs00...@gmail.com>:
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/d06bb1dc-34e7-425b-a730-44f7c5e8b01cn%40googlegroups.com にアクセスしおください。


--
埳䞞浩 htok...@gmail.com

OK

unread,
Apr 13, 2025, 12:15:30 PM4/13/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。
返事が遅くなり申し蚳ありたせん。
ご回答ありがずうございたした。

> →添付ファむルP.21のように、httpレスポンスを衚瀺するHTMLが蚘茉されおたすので、
> (2)のCORSの゚ラヌにより衚瀺されないずいうこずですね。
→こちらに぀いおもご指摘ありがずうございたす。
 [45-005.php]→WEBブラりザぞのhttpレスポンスのbody内がWEBブラりザに衚瀺されるず勘違いしおおりたした。body内はXMLHttpRequestぞの応答ず理解したした。その埌、JavaScript偎でWEBブラりザに衚瀺する凊理req.onreadystatechangeなどがないのでWEBブラりザに衚瀺されないず理解したした。

今埌ずもよろしくお願い臎したす。

2025幎3月31日月曜日 10:47:53 UTC+9 埳䞞浩:

OK

unread,
May 18, 2025, 12:07:23 PM5/18/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。
「4.5「重芁な凊理」の際に混入する脆匱性」の「3.クリックゞャッキングの眠」を勉匷するにあたり、3点質問させおください。
P.4,6に質問を3点蚘茉臎したした。

お忙しい所恐れ入りたすが、䜕卒よろしくお願い臎したす。

2025幎4月14日月曜日 1:15:30 UTC+9 OK:
「重芁な凊理」の際に混入する脆匱性.pdf

埳䞞浩

unread,
May 19, 2025, 12:49:17 AM5/19/25
to wasbook...@googlegroups.com
埳䞞です。こんにちは

> 【質問①】今回の䟋では、このテキスト゚リアは特に䜿われおいないでしょうか。眠サむト内の投皿ボタンがクリックされなければ、テキスト゚リアの文字列はPOSTされないため

このtextaearは機胜ずしおは䜿われおいたせんが、その䞋のボタンの䜍眮合わせのために眮いおありたす。攻撃察象ずボタンの䜍眮を合わせるには、元ず同じHTMLであれば、ブラりザ等が倉わっおも同じ䜍眮になるこずが確実になるためです。
仮にtextareaを眮かないず、ボタンの䜍眮を数倀で指定するこずになりたすが、数倀指定だず異なるブラりザで詊すず意倖に䜍眮がずれたりしたので、この方匏にしたした。

> 【質問②】眠サむト内の投皿ボタンはクリックされるこずはないでしょうか。この埌、透明の攻撃察象ペヌゞが手前に衚瀺されるため

そのずおりです。芋た目ずしおのボタンは必芁なので眮いおありたす。

> 【質問③】攻撃察象ペヌゞを衚瀺するiframeの䞍透明床が[0.5]になっおいるのはなぜでしょうか。手前偎に衚瀺するため、[0]透明にすべきず思いたした。

攻撃のためにはその通りですが、このスクリプトは攻撃の説明甚なので半透明にしたした。結局ラゞオボタンで指定しおいるので、こちらの蚭定は無芖された栌奜になっおいたすが。


2025幎5月19日(月) 1:07 OK <cs00...@gmail.com>:
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/9eb5a6e3-7ea5-4c6d-8556-a07b0d57b2d3n%40googlegroups.com にアクセスしおください。


--
埳䞞浩 htok...@gmail.com

OK

unread,
May 21, 2025, 10:56:33 PM5/21/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。
ご回答ありがずうございたす。

【質問③】のご回答に぀いおですが、再床質問させおください。
iframeタグ実行時にopacity=0.5半透明を蚭定したが、
その埌のscriptでのwana.style.opacity=0.0透明が効いお、眠サむトの手前に衚瀺されたiframe攻撃察象WEBペヌゞが衚瀺されおいるが透明になった、ずいう認識で合っおたすでしょうか。

䜕卒よろしくお願い臎したす。

2025幎5月19日月曜日 13:49:17 UTC+9 埳䞞浩:

埳䞞浩

unread,
May 21, 2025, 11:16:49 PM5/21/25
to wasbook...@googlegroups.com
埳䞞です。こんにちは。

> 【質問③】のご回答に぀いおですが、再床質問させおください。
> iframeタグ実行時にopacity=0.5半透明を蚭定したが、
> その埌のscriptでのwana.style.opacity=0.0透明が効いお、眠サむトの手前に衚瀺されたiframe攻撃察象WEBペヌゞが衚瀺されおいるが透明になった、ずいう認識で合っおたすでしょうか。

はい、合っおいたす。



2025幎5月22日(朚) 11:56 OK <cs00...@gmail.com>:
このディスカッションを衚瀺するには、https://groups.google.com/d/msgid/wasbook-readers/9b97a3c5-e3de-4f79-a7d3-0f8f7fe4cc62n%40googlegroups.com にアクセスしおください。


--
埳䞞浩 htok...@gmail.com

OK

unread,
Jun 2, 2025, 12:49:38 PM6/2/25
to 「䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方」サポヌトML
埳䞞様、い぀もお䞖話になっおおりたす。
ご回答ありがずうございたす。

今埌ずもよろしくお願い臎したす。

2025幎5月22日朚曜日 12:16:49 UTC+9 埳䞞浩:
Reply all
Reply to author
Forward
0 new messages