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注入。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容