Ads by Google
新しい記事を書く事で広告が消せます。
--------(--)
外部入力のデータをSQLに埋め込んで使うことは良くあります。たとえばユーザー認証にSQLを発行するようなケースです。
このとき、ユーザーから入力された内容をそのまま利用してはいけません。たとえば下記のようなコードです。
$pass = mysql_escape_string($_POST["pass"]); $sql="select id , username where pass = $pass"このとき、$_POST["pass"]に
"4 OR 1=1"と入力がなされていると、PHPの設定次第ではこのようなSQLが生成されます。
select no,username where pass= 4 OR 1=1
このSQLが発行されると、全てを返してしまいます。そのため、まずSQL文は値を「'」でかこんで
$sql="select id , username where pass = '$pass'"
という形にします。ただしこれだけでは、$IDに [1' OR 1='1]と入力されているとこのようなSQL文が生成されてしまうため
select no,username where pass='4' OR 1='1'
同じことになります。
そのため値のサニタイズもあわせて行う必要があります。MYSQLならmysql_escape_string()、PostgreSQLならpg_escape_string()が利用できます。ADODB、PEARDBなどを使っているなら、サニタイズ関数がありますからそちらを使うと良いでしょう。
tag : php セキュリティ SQLインジェクション
みんなの動画サーチ 現在の人気動画