Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CakePHP中清理数据/SQL注入_Php_Mysql_Cakephp - Fatal编程技术网

在CakePHP中清理数据/SQL注入

在CakePHP中清理数据/SQL注入,php,mysql,cakephp,Php,Mysql,Cakephp,在美国 CakePHP handles SQL escaping on all parameters to Model::find() and Model::save(). 我正在用CakePHP阅读有关安全和清理数据的文章,我看到了一篇博客文章 在作者的前两个示例中(假设您使用的是Cake 2.X),如果您将一个变量设置为某个POST数据,然后在find语句中使用该变量,您是否仍然容易受到SQL注入的攻击 作者在本例中声明,Cake将保护您免受SQL注入的影响 $articles = $t

在美国

CakePHP handles SQL escaping on all parameters to Model::find() and Model::save(). 
我正在用CakePHP阅读有关安全和清理数据的文章,我看到了一篇博客文章

在作者的前两个示例中(假设您使用的是Cake 2.X),如果您将一个变量设置为某个POST数据,然后在find语句中使用该变量,您是否仍然容易受到SQL注入的攻击

作者在本例中声明,Cake将保护您免受SQL注入的影响

$articles = $this->Article->find('all', array(
                'conditions' => array(
                    'Article.date' => $this->request->data['Article']['date'],
                )
            )
        );
其中,除非您在$date变量上使用sanitize实用程序,否则这将使您容易受到SQL注入的攻击

$date = $this->request->data['Article']['date']
$articles = $this->Article->find('all', array(
                    'conditions' => array(
                        "Article.date='{$date}'",
                    )
                )
            );
考虑到它们都是相同的值($date和$this->request->data['Article']['date']),Cake实际处理它们的方式是否不同

另外,我注意到CakePHP文档状态Sanitize在2.4版就被弃用了。我目前正在使用2.3.9。使用它还可以吗,还是应该切换到类似的库

编辑


我刚刚注意到作者使用了
“Article.date='{$date}'”
,而不是
Article.date=>$date

如果使用

'conditions' => array(
    'Article.date' => $this->request->data['Article']['date'],
 )
在第二个示例中,您需要首先负责转义
$date
变量


您现在在哪里使用sanitize类?来自该案例的建议可能也适用于您。

我编辑了我的文章,因为我意识到作者使用了
“Article.date='{$date}'”
而不是
Article.date=>$date
。后者会被蛋糕恰当地逃脱吗?它不会逃脱。为了验证,您可以进行一个简单的测试:发送无效数据并检查
sql\u dump
以查看生成的查询。谢谢。所以,如果我需要操作需要使用变量的发布数据,我必须在find语句中使用该变量之前对其进行转义?是的,我使用的是sanitize类(2.3.9版)。不管怎样,我想检查find语句的清理。您应该尝试使用数组(
'Article.date'=>$this->request->data['Article']['date'])的
find
方法(
'Article.date'=>$this->request->data['Article']['date'],)
如果不可能,在使用之前请先转义数据,或者也可以尝试查看准备好的语句--