举例:
通常登陆页面是这样写查询语句的:
$sql=“select * from user where username='name' and password='123456' ”;
if(用户存在){
登陆;
}else{
返回登陆页面
}
但是当攻击者输入密码是这样的格式:
password or 1='1';
便会跨越你后面的判断直接登陆。
有两种方法:
1:采用php预编译机制,取出结果判断。
2:变换判断方式,如:
后面的where去掉比对密码,只按照用户名查找一个密码,然后判断查询到的‘密码==传进来的密码’
因为恒等式‘==’属于php中的,不在是sql中的执行语句,因此这里要是不等立马回返回FALSE。