如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
1.什么是sql注入
sql注入是将sql代码添加到输入参数.传递到服务器解析并执行的一种攻击手段
产生原因:
开发人员无法保证所有代码都进行过滤
攻击者发送给服务器的经过构造的可执行的sql语句
数据库未做相对应的安全配置
2.寻找sql注入漏洞
逻辑推理法:
1.识别web应用中的所有输入点(get/post/http头信息)
get: a.php?id=-1 or 1 = 1
2.了解哪些类型特殊字符的请求会触发异常
get: ' " post: '
3.进行sql注入攻击
1.数字注入
a.php?id=-1 or 1 = 1
2.字符串注入
select * from user where name='xxx' and pwd='123456'; 填用户名时填入 xxx'# select * from user where name='xxx'#' and pwd='123456'; 填用户名时填入 xxx'-- select * from user where name='xxx'-- ' and pwd='123456';
4.预防sql注入
1.严格检查输入变量的强校验
判断id
使用正则限制
2.对输入的特殊字符进行转义
name="mysqli_real_escape_string($db,$username)" and pwd=1111;
3.mysqli预编译机制
$sql = select * from user where name=? and pwd= ? ; bind_param($sql,'ss',$name,$pwd);
4.pdo预处理