gpt4 book ai didi

php - 在 CakePHP 中清理数据/SQL 注入(inject)

转载 作者:行者123 更新时间:2023-11-29 00:19:32 31 4
gpt4 key购买 nike

CakePHP Docs它指出

CakePHP handles SQL escaping on all parameters to Model::find() and Model::save(). 

我正在阅读有关安全性和使用 CakePHP 清理数据的文章,我遇到了 this博文。

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

作者在这个例子中声明 Cake 将保护您免受 SQL 注入(inject)

$articles = $this->Article->find('all', array(
'conditions' => array(
'Article.date' => $this->request->data['Article']['date'],
)
)
);

除非您对 $date 变量使用 sanitize 实用程序,否则这会使您容易受到 SQL 注入(inject)攻击。

$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。它仍然可以使用吗,或者我应该切换到像 HTML Purifier 这样的库吗? ?

编辑

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

最佳答案

如果你正在使用,变量会被转义

'conditions' => array(
'Article.date' => $this->request->data['Article']['date'],
)

在第二个示例中,您需要负责首先对 $date 变量进行转义。

您现在在哪里使用清理类?来自 documentation 的建议也可能适用于您的情况。

关于php - 在 CakePHP 中清理数据/SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21613951/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com