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

Shigeki Mimura mimu @ telepass.co.jp
2003年 4月 24日 (木) 09:45:12 JST


三村です。

ono> > 例えば
ono> > 	http://www.example.com/example.php?ID=5
ono> > のようにIDを指定する場合、
ono> > 	$SQL = "SELECT * FROM testtable WHERE ID=".$_POST["ID"];
ono> > のようにSQL化し、そのままpg_query()なりに突っ込んでいると、
ono> > 	http://www.example.com/example.php?ID=5%3BDROP%20TABLE%20testtable
ono> > 等と指定されてしまった場合どんな動作になるでしょうか。
ono> 
ono> 僕自身初心者なので、ここの部分に凄い興味があり試してみました。
ono> 環境は、Redhat7.3+Apache2.0.43+php4.2.3+PostgreSQL7.3.2です。
ono> create table testtable(id char(200),q1 int) ;
ono> としてテーブルを作成し、PHP側はご指摘のように作成してみました。
ono> テーブルがDROPされる事を期待?して実行してみましたが、結果は
ono> Select結果の0件が返されました。
ono> 
ono> 実際はDropされるのでしょうか。

上記のはちょっと違ってますね。

http://www.example.com/example.php?ID=5%3BDROP+TABLE+testtable

だとドロップされます。
SQLではシングルクオートで括ったものが一つの塊になるので、
シングルクオートをエスケープしてから渡すのが良いでしょう。


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