[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 メーリングリストの案内