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