使用Zend Framework逃避用户输出的最佳方法是什么?

时间:2009-02-03 15:40:08

标签: php zend-framework

我对使用什么来逃避用户输出感到有点困惑。

首先,有Zend_Filter_Input类看起来可能会做我想要的但似乎是面向批量过滤大量项目。目前我只想过滤一个。另外,我对与过滤器相比的escaper的定义感到有些困惑。 StringTrim过滤器和escaper之间有什么区别?

是否有更好的解决方案来逃避单个元素?

3 个答案:

答案 0 :(得分:5)

过滤器在您的表单上非常棒,因此您可以清理&在处理/存储数据之前规范化您的数据。你提到了StringTrim - 你有其他的确保大写或你的输入都是数字(或字母或数字......)。请注意,这是为了确保数据的一致性和完整性 - 而不是为了避免SQL注入 - ZF的数据库库将其作为一个单独的问题处理。

在另一方面,你可以逃避输出。虽然“x <5”或“PB&amp; J”可能是在您的系统中存储和处理的完全有效的数据,但是当它们显示在网页上时会导致问题。这就是您通常使用htmlspecialchars()htmlentities()的原因 - 默认情况下,Zend_View在$this->escape($foo)时使用htmlspecialchar()。

答案 1 :(得分:1)

使用htmlspecialchars()

如果这不是您想要的,请通过“转义用户输出”指定您的意思。

答案 2 :(得分:0)

如果您担心安全性并希望自动转义所有类似于Django的变量,那么您可能会对本文感兴趣。

How to automatically escape template variables in Zend_View