sql注入大大降低了网站的安全性!最终达到欺骗服务器执行恶意的SQL命令。 会查出条件不允许的数据,
假如是这样的一条sql:
$sql="select * from stu where stu_name = $name and stu_email = $password";
那么危险来了,注入sql后会变成这样:
select * from t_admin where stu_name ='xxx' and stu_email ='xxx'' or '1';
那我们常见的sql注入还如何解决呢
1.添加图形码进行验证
添加图形码在一定程序上增加代码的安全性,给机器强制破解有一定的拦截作用,但不能阻止所有的攻击,
故还是需要在程序上进行安全性考虑
2.使用预备义语句和参数化查询
使用预处理语句和参数化查询。预处理语句和参数分别发送到数据库服务器进行解析,参数将会被当作普通字符
处理。这种方式使得攻击者无法注入恶意的SQL。常用的方式有两种
预备义语句(使用PDO中的预处理)
不同sql的注入的威胁到我们的网站,那么怎么解决呢,针对上面的一条sql来说:
$sql="select * from stu where stu_name = ? and stu_email = ?"; //预处理(prepare) $stmt = $db->prepare($sql);//生成一个“查询对象” $exeres=$stmt->execute(array($name,$password));//执行
我们用‘?’字符串将sql替代,形成一个预处理的数据。
参数化查询(使用mysqli)
$stmt = $dbConnection->prepare('SELECT * FROM t_admin WHERE admin_name = ?');
$stmt->bind_param('s', $name);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// do something with $row
}
希望可以帮助到各位呦!