sql注入漏洞防御措施有:
1.對輸入進行嚴格的轉義和過濾,例如:
//轉義示例
function escape($link, $data){
if(is_ string($data)){
return mysqli_ real escape_ str ing($link , $data);
}
if(is_ array($data)){
foreach ($data as $key=>$val){
$data[$key ]=es C ape($link, $val);
}
}
return $data;
}
過濾舉例:(黑名單)
str_replace("%","",$_ POST['username']),把post里面的數據里面含有%的替換成空
2.使用PDO的prepare進行預處理,例如:
$username=$_ GET['username
'];
$password=$_ GET['password'];
try{
$pdo=new PDO('mysql:host=localhost;dbname='ant','
root','root');
$sq1="select * from admin where username=? and passowrd=?";
$stmt=$pdo->prepare($sq1);//先不傳參數,先預處理
//
var_ dump($stmt);
$stmt->execute(array($username,$password));
//這個時候在把參數傳進去,以索引數組的方式傳進去,而不是拼接,就成功防止了注入
}catch (PDOException $e){
echo $e->getMessage();
}
?>