[PHP] SQL インジェクション 対策
いまのところ受け取る値を無害化するので一番いいのはこれかなあ。
$sqlstr = preg_replace(array('/[~;\'\"]/','/--/'),'',$val);
1.「;」「'」「"」を削除
2.「--」を削除(※「-」は削除しない)
before --> = 2006-03-25 and tast = 10 and 1=1; delete from t_table;- --
after --> = 2006-03-25 and tast = 10 and 1=1 delete from t_table-
もっといいの知ってたら教えてください。
$sqlstr = preg_replace(array('/[~;\'\"]/','/--/'),'',$val);
1.「;」「'」「"」を削除
2.「--」を削除(※「-」は削除しない)
before --> = 2006-03-25 and tast = 10 and 1=1; delete from t_table;- --
after --> = 2006-03-25 and tast = 10 and 1=1 delete from t_table-
もっといいの知ってたら教えてください。
<?php
function inject_4SQL($val,$vartyp='str')
{
switch ($vartyp) {
case 'int':
$sqlstr = intval($val);
break;
case 'dbl':
$sqlstr = doubleval($val);
break;
default:
$val = preg_replace(array('/[~;\'\"]/','/--/'),'',$val);
$sqlstr = addslashes($val);
}
return $sqlstr;
}
?>
コメント