[PHP-users 14832]Re: GETのセキュリティ

Koji KUSANAGI kusanagi @ crumple.co.jp
2003年 4月 23日 (水) 23:14:50 JST


草薙と申します。

単純に、そのIDでSELECTした結果のレコード数が0かどうかで判別してエラーを
出すといった問題ではないのでしょうか?

# 以下、ご質問の件とは少しずれますが、少々気になりましたので。

GETであろうがPOSTであろうが、フォームの形式がプルダウンであってもチェッ
クボックスであっても、簡単に偽装が可能です。
プログラムへの入力データは全て汚染されていることを前提に考え、エラーがあ
るデータを捨てるのではなく、面倒でも汚染されていると思われるデータの中か
ら条件に合うデータのみを抽出するような処理を実装するべきです。
敢えてきつめの言い方をさせて頂ければ、セキュリティに対する認識そのものが
甘いのではないかと思います。

例えば
	http://www.example.com/example.php?ID=5
のようにIDを指定する場合、
	$SQL = "SELECT * FROM testtable WHERE ID=".$_POST["ID"];
のようにSQL化し、そのままpg_query()なりに突っ込んでいると、
	http://www.example.com/example.php?ID=5%3BDROP%20TABLE%20testtable
等と指定されてしまった場合どんな動作になるでしょうか。

以下の記事のご一読をお薦めいたします。
http://www.ipa.go.jp/security/awareness/vendor/programming/index.html

----------------------------------------------------
草薙考司 <kusanagi @ crumple.co.jp>


PHP-users メーリングリストの案内