如何防止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

}

希望可以帮助到各位呦!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值