PHPでのSQLインジェクション対策方法纏め

対策1 addslashes(メソッドを使う

//エスケープ文字を削除
function stripslashes_array($array) {
if (is_array($array)) {
foreach ($array as $k => $v) {
$array[$k] = stripslashes_array($v);
}
} else if (is_string($array)) {
$array = stripslashes($array);
}
return $array;
}
@set_magic_quotes_runtime(0);
// magic_quotes_gpcの判断
if (@get_magic_quotes_gpc()) {
$_GET = stripslashes_array($_GET);
$_POST = stripslashes_array($_POST);
$_COOKIE = stripslashes_array($_COOKIE);
}

対策2

$keywords = addslashes($keywords);
$keywords = str_replace(“_","\_",$keywords);  //"_"を 置換
$keywords = str_replace(“%","\%",$keywords);//"%"を置換

対策3: 文字列タイプの変換
例 $id=intval($_GET['id’]);

対策4:SQLの構文はパラメータの引用符号が含まれる
SELECT * FROM article WHERE articleid=’$id’ ok
SELECT * FROM article WHERE articleid=$id ng

Source

Posted by arkgame