什么是使用mysql_real_escape_string并用htmlspecialchars而在CakePHP中保存数据的最佳方式?
-
12-09-2019 - |
题
我使用FCKEditor的使用CakePHP,当我保存了编辑器发送的数据我想对数据运行用htmlspecialchars()和mysql_real_escape_string()函数来清洁它之前,我将它存储在我的数据库。问题是,我真的不知道从哪里CakePHP的框架内做到这一点。我试图在这样的控制器:
function add()
{
if (!empty($this->data))
{
if ($this->Article->save(mysql_real_escape_string(htmlspecialchars($this->data))))
{
$this->Session->setFlash('Your article has been saved.');
$this->redirect(array('action' => 'index'));
}
}
}
然而这 - $>数据是一个数组,这些功能期望字符串,以便将无法工作。难道我做模型的验证阵列?我不知道。此外,让我知道,如果运行的htmlspecialchars()mysql_real_escape_string内()是不是一个好的做法。
解决方案
在不要使用htmlspecialchars()
保存的数据,使用它时,你的输出的数据为HTML。如果你需要看看在一些方面比HTML?
此外,我不是一个蛋糕的,但是如果你需要为你保存数据或者应用mysql_real_escape_string()
我会感到惊讶。数据库访问层应该保护您免受SQL注入,并通过做手工你会最终存储双转义字符串。
其他提示
在短期和简单的答案是 - 如果数据库访问已经被抽象化了,没有必要让你在所有调用这些函数。
需要的地方去的地方是,如果你从字符串位建立实际的SQL。你不应该这样做,无论如何,但那是另一回事了。
底线是 - 框架将做正确的事,不干扰
。编辑:正如比尔Karwin指出 - htmlspecialchars()
是完全错误的部门此处
如果您正在构建使用CakePHP自己的SQL字符串,然后CakePHP提供了逃生功能:
escape(string $string, string $connection)
不隶属于 StackOverflow