我的印象是FormHelper不仅自动保护我免受SQL注入,而且默认情况下还会转义HtmlHelper之类的特殊字符。但是,当我有:
<?php echo $this->Form->input('field', array('escape' => true)); ?>
然后输入&amp;并且'例如进入该领域并点击保存。这些特殊字符将保存到数据库而不进行任何转义。如果不将选项escape设置为true,也会发生这种情况。所以我的问题如下。
CakePHP的设计是否正确,以便在使用FormHelper的选项保存之前,您不应该也不能逃避表单字段?或者我做错了什么?
答案 0 :(得分:1)
你做错了,你应该通过使用h()函数(htmlspecialchars()的快捷方式来逃避不通过核心助手的所有输出。核心帮助程序,如Html :: link()将自动转义。