您好,匿名用户
随意问技术百科期待您的加入

mysql注入问题

0 投票

AND (SELECT 2693 FROM(SELECT COUNT(*),:vxd:,(SELECT MID((IFNULL(CAST(count(*) AS CHAR),'')),1,50) FROM vip_card WHERE sn like '20%' and active=1),:hez:,0)x FROM information_schema.tables GROUP BY x)a)

以上是我查到被注入的语句,请问这条语句是如何产生的,网站又需要如何更好地去防御这类攻击?

用户头像 提问 2012年 12月1日 @ Lux 上等兵 (267 威望)
分享到:

1个回答

0 投票

此处原本代码应该当是and(后跟的变量未被过滤,从代码来看,此处应当期望输入的是一个数字,所以此处应当intval输入的参数。

例如

$sql = "SELECT xxx from table where cid = '1' and (".intval($_GET['ids'].")";

我之所以认为这边期望输入的是一个数字,是因为and后面的(内没有单引号,不是and(',如果期望引用的不是数字而是字符串的话,在正常业务中就会出错。

我建议,引用输入的时候,都必须用单引号包裹,可以考虑楼上说的pdo这类占位符机制引入变量

您可以看看pdo中的prepare。:)

用户头像 回复 2012年 12月1日 @ Leona 上等兵 (279 威望)
提一个问题:

相关问题

0 投票
1 回复 29 阅读
用户头像 提问 2013年 11月30日 @ Amumu 上等兵 (340 威望)
0 投票
1 回复 67 阅读
0 投票
1 回复 31 阅读
用户头像 提问 2012年 12月1日 @ Nasus 上等兵 (329 威望)
0 投票
1 回复 72 阅读
用户头像 提问 2012年 12月1日 @ Pisces 上等兵 (182 威望)
0 投票
1 回复 41 阅读
用户头像 提问 2012年 12月1日 @ Berserker 上等兵 (157 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...