必威体育Betway必威体育官网
当前位置:首页 > IT技术

如何防止sql注入呢?

时间:2019-08-06 22:42:09来源:IT技术作者:seo实验室小编阅读:79次「手机版」
 

防止sql注入

sql注入大大降低了网站的安全性!最终达到欺骗服务器执行恶意的SQL命令。 会查出条件不允许的数据

假如是这样的一条sql:

$sql="select *from stu where stu_name = $nameand 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

}

希望可以帮助到各位呦!

相关阅读

Mysql中将关键字设为字段,该如何处理

前言 写完一个借口,测试时,总是提示SQL语句有问题,不可能吧,我是直接用的mybatis自动生成的,不应该啊,找了半天,原来是因为数据库中将关

spring总结3——依赖注入

目录 1、给普通字段注入值 ​2、通过构造方法给参数赋值以及调用指定的构造方法  ​3、给对象类型的属性注入值 4、给list集合注

SQL数据库触发器

触发器的概念触发器是一种特殊的存储过程,它被分配给某个特定的表。当对这个表进行插入、更新或删除操作时,自动调用触发器执行触发

MySQL空间数据库

提到空间数据库,首先想到的一定是Esri公司的ArcSDE(SDE即Spatial Database Engine,空间数据库引擎),ArcSDE主要支持的数据库包括Oracle

Sql学习笔记-declare用法

栗子一: IF 1=1BEGINDECLARE @test VARCHARSET @test='1'   PRINT 'in if:'+@testEND 运行看结果输出in if:1这是可以预

分享到:

栏目导航

推荐阅读

热门阅读