昨天我收到一封来自某人的电子邮件,说我们的网站容易受到 SQL 注入(inject)攻击。电子邮件说:
I tried some classic SQL injection on your server. This URL contains the result:
请注意,在上面的 URL 中,我没有公开我的实际域并将其替换为 mysite.com。
任何人都可以解释上面的 URL 是什么意思,因为我的网站很容易受到这种 url 的攻击,也可能会受到您的网站的攻击。</p>
如何解码该 url,那里发生了什么?
最佳答案
问题是您将查询字符串上的 SQL 命令连接到您的 SQL 命令中。
大概你的代码是这样的
"select * from preview where ID=" + Request.QueryString["id"]
一旦你使用了那个QueryString,它就变成了
select * from preview where ID=611111161 and 1=0
UNION ALL
SELECT 1,2,3,4,password,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,user=id,70,71
FROM admin
EG:他让您的管理员帐户登录信息显示在您的预览页面上。
您应该始终确保对从用户那里获得的任何输入进行 SQL 转义,或者更好地使用参数化查询,服务器会处理这些。在不了解 SQL 服务器的语言或类型的情况下,我无法真正为您指明执行此操作所需代码的方向。
关于发现 SQL 注入(inject)漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1795099/