マルチバイトの落とし穴星野君のWebアプリほのぼの改造計画(10)(3/3 ページ)

» 2006年09月23日 00時00分 公開
[杉山俊春, Illustrated by はるぷ三井物産セキュアディレクション株式会社]
前のページへ 1|2|3       

半端なマルチバイト文字への対策方法

星野君 「これって、ちゃんとした対策ってあるんですか?スクリプトが動かなくてもタグが壊れるのは微妙ですよね……」

赤坂さん 「そうだねー。例えば、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アプリ・チェックポイント!

赤坂さん

Check!
Webブラウザの挙動を知ろう

クロスサイトスクリプティングのようなWebブラウザの挙動に影響される脆弱性を把握するためには、Webブラウザ自身の挙動を把握することが必要となる。マルチバイト文字の扱いや、タグの構文の扱いなどを正しく把握しよう

Check!
マルチバイト文字は正しく扱おう

不正なマルチバイト文字は、思わぬ誤作動を起こす場合がある。Webブラウザや連携するアプリケーションによっては脆弱性につながる可能性があるため、入力チェックの際に安全な文字への変換や除去を行おう


Profile

杉山 俊春(すぎやま としはる)

三井物産セキュアディレクション株式会社
テクニカルサービス事業部検査グループ
コンサルタント

セキュリティコンサルタントとして、主にWebアプリケーションのセキュリティ検査などに従事している。大手就職活動支援サイト、ショッピングサイトなどの検査実績を持つ。



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。