WEB安全之SQL注入

1) 如何理解sql注入

sql注入是一种将sql代码添加到输入参数中,传递到sql服务器解析并执行的一种攻击手法。输入参数未经过滤直接拼接sql代码执行。

2) sql注入是如何产生的

1.web开发人员无法保证所有输入都已经过滤

2.攻击者利用发送给sql服务器的输入数据构造可执行代码

3.数据库未做相应的安全配置

3) 如何寻找sql注入漏洞

1.识别web应用中所有输入点

2.了解哪些请求会触发异常

3.检测服务器响应中的异常

4) 如何进行sql注入攻击

※.数字注入

正常sql:select * from article where id = 1;

攻击sql:select * from article where id=-1 or 1=1;

※.字符串注入

正常sql:select * from user where username='zhangsan' and password='123456';

攻击sql ①:select * from user where username='zhangsan'# and password='123456';注:#后面的内容会被当做注释

攻击sql ②:select * from user where username='zhangsan'-- ' and password = '123456';注:-- ' 后面的内容会被当做注释

5) 如何预防sql注入

1.严格检查输入变量的类型和格式

2.过滤和转义特殊字符 

#方法一:addslashes($username)

#方法二:mysqli_real_escape_string($username, $db)

3.利用mysql的预编译机制

MySQL pdo预处理能防止sql注入的原因:

1、先看预处理的语法

  $pdo->prepare('select * from biao1 where id=:id');

  $pdo->execute([':id'=>4]);

2、语句一,服务器发送一条sql给mysql服务器,mysql服务器会解析这条sql。

语句二,服务器发送一条sql给mysql服务器,mysql服务器不会解析这条sql,只会把execute的参数当做纯参数赋值给语句一。哪怕参数中有sql命令也不会被执行,从而实现防治sql注入。

你可能感兴趣的:(WEB安全之SQL注入)