所以我知道 SQL 注入攻击的基础知识,以及未清理的条目。所以
SELECT id FROM users WHERE username='$username' AND password='$password'
(注意 $password 是散列的)将被击败$username=x'
or1=1; --
一位朋友说,如果你在你的源代码中扔了一个\n 字符,那么你就不能将查询的其余部分注释掉。所以如果你有
Select id
from users
where username='$username'
and password='$password'
在php中,然后将其提交给查询,那么即使他们试图注释掉用户名,它也会出错,因为它and password='$password'
仍然会尝试并被执行。
我试过了,他似乎是对的。所以,我的问题是,虽然你仍然应该清理你的数据库输入,但这是否可以防止这样的攻击,还是有办法绕过它?
我不知道这是否重要,但我在这里专门谈论mysql。