因此,我知道SQL注入攻击的基础知识,其中没有清理过的条目。所以在查询中使用换行符进行sql注入
SELECT id FROM users WHERE username='$username' ANDpassword='$password'
(注意:$密码哈希)将与$username=x'
或1=1; --
一位朋友说,如果你把一个\ n字符到你的源代码,那么你就不能发表意见被打败其余部分查询出来。所以,如果你有
Select id\nfrom users\nwhere username='$username'\nand password='$password'
在PHP
,然后将其提交给查询,那么即使他们试图注释掉的用户名,将错误的原因是and password='$password'
仍然会尝试和执行。
我试过了,他似乎是正确的。所以,我的问题是,虽然你仍然应该清理你的数据库输入,这是否能够防止这样的攻击,还是有办法绕过它呢?
我不知道它是否重要,但我在此专门讨论mysql。
这里是最好的文章,使用'PreparedStatements' http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php –
感谢您的文章链接!顺便说一句,为什么这个问题被拒绝投票?我做了一些错误,下次可以改进吗?还是只是问题的主题? – jnesselr