Zend View - 自动转义分配的变量

时间:2013-03-08 16:22:15

标签: zend-framework xss zend-view

Zend_View的{​​{3}}显示escape($var)方法。它还建议应为我们想要显示的每个变量手动调用它:$this->escape($this->var);

有没有办法将Zend_View扩展为自动转义?

2 个答案:

答案 0 :(得分:1)

出于两个原因,这是一个值得考虑的风险。

首先,所需的转义类型取决于输出变量的上下文。例如。在某些HTML中间输出字符串需要转义不同的字符,而不是在某些<script>标记中输出,或者作为HTML属性的值。

其次,你会对物体做些什么?考虑echo $this->nameecho $this->user->name(其中$this->user是类的实例)。在后一个示例中,->name甚至可以是动态生成的字符串,它是__get()调用的结果。这是无法自动转义的,因此您最终会遇到一些数据被自动转义而某些数据没有自动转义的情况。可以说,这比开箱即用的逃避方法更不安全,因为它提供了一种虚假的安全感。

答案 1 :(得分:1)

我相信这可以通过使用自定义View类来实现,该类使用自定义流处理程序。

Rob Allen在http://akrabat.com/zend-framework/a-view-stream-with-zend_view/提供了此类实施的详细信息。