星野君 「これって、ちゃんとした対策ってあるんですか?スクリプトが動かなくてもタグが壊れるのは微妙ですよね……」
赤坂さん 「そうだねー。例えば、PHPの場合ならmb_convert_encoding関数を使うと半端なマルチバイト文字は消えるみたいだよ。ほかの言語でもマルチバイトをちゃんと扱える関数を使ったらいけると思うよ」
星野君 「へぇ〜……」
<form> テキスト1: <input type=text name=text1 value="<?= htmlspecialchars(mb_convert_encoding($_GET{'text1'},'SJIS','SJIS')) ?>"><br> テキスト2: <input type=text name=text2 value="<?= htmlspecialchars($_GET{'text2'}) ?>"><br> <input type=submit value="送信"> </form> |
修正例 |
星野君は、聞いてすぐにはあまり理解できた気がしなかったので、後でじっくり検証してみることにした。
星野君 「それにしても……」
赤坂さん 「ん?」
星野君 「赤坂さんはどうしてWebアプリのセキュリティに詳しいんですか?」
赤坂さん 「ああ、私、前の会社でWebアプリの検査の仕事をメインでやってたからねぇ〜」
星野君 「なるほど〜。道理で詳しいわけですね。あ!もしかしてまこ……」
赤坂さん 「けど、高橋さんの方が詳しいと思うよ」
星野君 「え?」
赤坂さん 「あれ?知らないんだっけ。高橋さんと私、前の会社でも一緒だった時期あるよー」
星野君 「高橋さんも……?」
そういえば、以前、Cookie Monsterの話をしていたとき(第6話)に、妙に詳しい感じがしたが、納得できたような気がした。
赤坂さん 「ほい。じゃ、次いくよ。ブラインドSQLインジェクションはこないだやったから、ほかに難しいのは……」
星野君 「いや、簡単なところから……」
次回予告:
簡単なものなら見つけられると思っていた星野君、Webアプリのチェックは奥が深いことを再認識しました。でもまた難問が待っているようです……
杉山 俊春(すぎやま としはる)
三井物産セキュアディレクション株式会社
テクニカルサービス事業部検査グループ
コンサルタント
セキュリティコンサルタントとして、主にWebアプリケーションのセキュリティ検査などに従事している。大手就職活動支援サイト、ショッピングサイトなどの検査実績を持つ。
Copyright © ITmedia, Inc. All Rights Reserved.