mysql数据库的稳定性,容量神马的很不好,很容易遭到入侵,下面就来介绍一个入侵实例:

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)

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

例如

$sql = “SELECT xxx from table where cid = \’1\’ and (“.intval($_GET[\’ids\’].”)”;

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

怎样解决这样的问题呢?

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

再使用pdo中的prepare

4 对 “MYSQL遭注入后”的想法;

  1. 一律用参数调用就不会出问题了,跟mysql没关系,oracle你直接拼接也会漏洞多多。

    或者全部存储过程,安全,性能好

评论被关闭。