我应该用什么来逃避用户输出,我有点困惑.
首先,这个Zend_Filter_Input
类看起来可能会做我想要的但似乎是面向批量过滤大量项目.目前我只想过滤一个.另外,我对与过滤器相比的escaper的定义感到有些困惑.StringTrim
过滤器和逃生器之间有什么区别?
是否有更好的解决方案来逃避单个元素?
过滤器在表单上非常棒,因此您可以在处理/存储数据之前清理和规范化数据.你提到了StringTrim - 你有其他的确保大写或你的输入都是数字(或字母或数字......).请注意,这是为了确保数据的一致性和完整性 - 而不是为了避免SQL注入 - ZF的数据库库将其作为一个单独的问题处理.
在另一方面,你可以逃避输出.虽然"x <5"或"PB&J"可能是在系统中存储和处理的完全有效的数据,但它们可能会在网页上显示时出现问题.这就是你通常使用的原因,htmlspecialchars()
或者htmlentities()
- 默认情况下,Zend_View使用htmlspecialchar()$this->escape($foo)
.