0

我的印象是 FormHelper 不仅自动保护我免受 SQL 注入,而且默认情况下也会像 HtmlHelper 那样转义特殊字符。但是,当我有:

<?php echo $this->Form->input('field', array('escape' => true)); ?>

然后在字段中输入 & 和 ' 例如并点击保存。这些特殊字符无需任何转义即可保存到数据库中。如果没有将选项转义设置为 true,也会发生这种情况。所以我的问题如下。

CakePHP 的设计是否真的是让您在使用 FormHelper 的选项保存之前不应该也不能够转义表单字段?还是我做错了什么?

4

1 回答 1

1

您做错了,您应该使用 h() 函数(htmlspecialchars() 的快捷方式)转义所有类型的未通过核心帮助程序的输出。核心助手,如 Html::link() 会自动转义。

另请参阅如何在 PHP 中转义输出

于 2012-10-31T23:48:47.960 回答