CakePHP 2.0上的SQL注入
当有人在我的网站上执行此url时,“post”表中的数据将被删除: 外键检查=0;删除职位 或 外键检查=0 目前,PostController的功能如下: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
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函数”,所以请展示它们。我已经更新了我的问题。虫子不在那里。无论如何,我还不知道怎么解决它。