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