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();
}
?>