0

我正在使用它来将我的数据保存到数据库中:

$this->request->data['Post']['body'] = utf8_decode($this->request->data['Post']['body']);

像这样,我可以将一些“特殊”字符保存到我的数据库中,比如带有重音符号的字符:áéíóú 没有任何问题。

然后,我尝试保护我的应用程序免受 HTML 和 SQL 注入,并像这样使用 Sanitization:

$this->request->data['Post']['body'] = Sanitize::html($this->request->data['Post']['body']);

所以现在我的文本像这样存储在数据库中:

á = á
é = é
í = í ...etc

我不想那样。此外,我在 DB 上的字段有最多的字符,这无济于事。

我还尝试使用编码 = true、编码 = 假或编码 = 'utf8' 的 sanitize 选项参数,但似乎没有任何改变。

我应该怎么办?谢谢。

更新 1

我也尝试在我的控制器上使用 htmlentities 函数,但它将它插入我的数据库而不是á:

Ã
4

1 回答 1

2

如果您使用 Cake 来保存您的数据(即使用save()not query()),那么您就可以防止 SQL 注入。它会自动转义值。

如文档中所述,Sanitize::html()会将字符转换为 HTML 实体,例如>,á等。除非您特别想要 HTML 实体,否则您可能不应该使用它。如果您的应用程序和表格具有正确的编码,Cake 将负责将您的口音存储在数据库中。

于 2012-04-16T16:45:09.900 回答