如何防止sql注入呢?

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

}

希望可以帮助到各位呦!

猜你喜欢

转载自blog.csdn.net/qq_41718455/article/details/80515096