昨天我收到一封电子邮件,说我们的网站容易受到SQL注入攻击.电子邮件说:
我在你的服务器上尝试了一些经典的SQL注入.此URL包含结果:
http://www.mysite.com/ppreview.php?id=611111161%20and%201=0%20UNION%20all%20SELECT%201,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%20%20from%20admin - &U = 10064&T = users_cars
请注意,在上面的URL中,我没有公开我的实际域名并将其替换为mysite.com.
任何人都可以解释上面的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服务器的语言或类型的情况下,我无法真正指出您需要执行哪些代码的方向.