这是一个codeigniter漏洞吗?

时间:2009-09-17 02:20:27

标签: codeigniter codeigniter-pagination

我发现CodeIgniter中的分页脚本有错误:

 $this->db->where("by_id",$user_id);
 $this->db->order_by("date","desc");
 $this->db->limit(10,$from);
 $query = $this->db->get("status");

网址如下所示:server / demo / page / 10

所以如果用户输入server / nedjma / baniss / 1000000000000000000000

  

错误号码:1064

     

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在第5行的“1000000000000000000000,10”附近使用正确的语法

     

SELECT * FROM(status)WHERE by_id ='58'ORDER BY date desc LIMIT 1000000000000000000000,10

你可以告诉我,这是什么错误?

1 个答案:

答案 0 :(得分:4)

这不是CodeIgniter漏洞或错误。这只是一个SQL / MySQL问题。我用phpMyAdmin进行了一些测试,你可以使用的最大偏移量大约是18000000000000000000。

任何更大的内容,您将收到SQL语法错误。如果您想防止发生此错误,请检查以确保$from不大于18 x 10 ^ 18,或创建您自己的自定义错误页面。您也可以关闭错误报告 - 在CI的index.php顶部,error_reporting(0);

最后一点 - 您发布的代码不适用于SQL注入。 CodeIgniter的Active Record类为您转义并检查您的输入。如果$from不是数字,则Active Record在创建SQL时不会生成LIMIT子句。