sql注入的防御
本质是,过滤+转义
数字型防御
首先找到靶场调用函数的那个文件,用Visual Studio Code软件打开,这个靶场的调用在公用函数库里
经查找套娃了,在这里
复制函数在文件里查找
可以看到这儿中间是空的,这儿传的东西可以直接进去执行
直接将参数强制转换为数字
- intval():强制转换为整数
- floatval():强制转换为小数
字符型防御
转义防护
- addslashes() 将特殊字符进行转义
addslashes($_GET['id']);
这个就是对特殊字符转义后的
WAF
web防火墙,写好了一些过滤,转义的规则。或者部署web应用防火墙
预处理
原因:预处理将sql语句进行了提前解析,即传入的参数不会再当做sql语句解析了,所以就不会执行。
注入防护测试,自行测试
总结: