SQL注入

1、什么是SQL注入?

就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。

例如:

SQL注入

注意:SQL注入对登录和注册不安全,

2、怎样防止SQL注入?

1.严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害 

2检查输入的数据是否具有所期望的数据格式,严格限制变量的类型 

3.对进入数据库的特殊字符(’”\尖括号&*;等)进行转义处理,或编码转换。

代码如下:

SQL注入

使用以上代码就能防止SQL注入。

原因是:

当调用 prepare() 时,查询语句已经发送给了数据库服务器,此时只有占位符 ? 发送过去,没有用户提交的数据;当调用到 execute()时,用户提交过来的值才会传送给数据库,他们是分开传送的,两者独立的,SQL攻击者没有一点机会。