CakePHP 2.0上的SQL注入

CakePHP 2.0上的SQL注入,sql,cakephp,sql-injection,cakephp-2.0,code-injection,Sql,Cakephp,Sql Injection,Cakephp 2.0,Code Injection,当有人在我的网站上执行此url时,“post”表中的数据将被删除: 外键检查=0;删除职位 或 外键检查=0 目前,PostController的功能如下: public function getPosts($idUser, $return = true){ $idUser = Sanitize::clean($idUser); //calling Post Model... $posts = $this->Post->getPosts($idUs

当有人在我的网站上执行此url时,“post”表中的数据将被删除:

外键检查=0;删除职位

外键检查=0

目前,PostController的功能如下:

public function getPosts($idUser, $return = true){
    $idUser = Sanitize::clean($idUser);     

    //calling Post Model...
    $posts = $this->Post->getPosts($idUser);
}

是的。。。很抱歉,我在Post模型中有一个SQL语句叫做“getPosts”。(但我现在不能改变它…)

我以为用消毒液就足够了。。。 我怎样才能解决它??当我使用自己的SQL函数时,在CakePHP中是否有与mysql\u real\u escape\u string等价的东西


谢谢。

您在那里所做的是非常错误的,与sql注入无关。 你在这里惊慌失措,找错了方向

a) 您不需要utf8\u decode()-在整个过程中使用utf8

b) 您不需要strip_标记()-在视图中使用h()

c) 你不需要消毒-就像脱衣标签一样不必要

d) 由于您使用save(),因此代码对SQL注入是安全的

但是

您的代码可能不安全,无法防止表单调整

因此,您应该强制执行白名单或其他一些基本安全措施,例如至少使用安全组件

有关如何真正发挥作用的更多详细信息,请参见:

只要使用内置的查询生成器,如
find
save
,CakePHP 2.x就可以防止SQL注入

如果您的表ID是整数,那么有一种快速而简单的方法可以保证良好的安全性。在参数上使用PHP的整数类型转换器。它将转换为正确的ID值或零。不需要清理整数值

public function getPosts($idUser, $return = true)
{
    $posts = $this->Post->getPosts((int)$idUser);
}

在我的模型中,我一直在这样做,这是一个很好的习惯。

是什么让你相信有人在这里注射了SQL?蛋糕会自动防止这种情况。(还有,标记注入!=sql注入。)我不确定它在哪里。我不确定这是否是SQL注入,但我不知道还有其他方法可以删除表。你知道怎么对付这个吗?谢谢。你必须证明有人/事导致桌子掉落,以便我们提供帮助。日志、显示方法工作的测试用例等等。我已经更新了我的问题。看一看。谢谢,谢谢你的日志,我们越来越近了。再一次,蛋糕会为你逃脱束缚。显然,如果表被删除,您的函数会有更多的功能。或者它在
Post::getPosts()
中,当您尚未显示时。你说“我自己的SQL函数”,所以请展示它们。我已经更新了我的问题。虫子不在那里。无论如何,我还不知道怎么解决它。