的文档显示Zend_View
了一种escape($var)
方法。它还建议应该为我们要显示的每个变量手动调用它:$this->escape($this->var);
有没有办法扩展Zend_View
自动逃生?
的文档显示Zend_View
了一种escape($var)
方法。它还建议应该为我们要显示的每个变量手动调用它:$this->escape($this->var);
有没有办法扩展Zend_View
自动逃生?
出于两个原因,这是一件有风险的事情。
首先,所需的转义类型取决于输出变量的上下文。例如,在一些 HTML 的中间输出一个字符串需要对不同的字符进行转义,而不是在一些<script>
标签中输出它,或者作为 HTML 属性的值。
其次,你会如何处理对象?考虑echo $this->name
vs. echo $this->user->name
($this->user
类的实例在哪里)。在后一个示例->name
中,甚至可以是作为__get()
调用结果的动态生成的字符串。这是无法自动转义的,因此您最终会遇到一些数据被自动转义而有些数据没有被自动转义的情况。可以说,这比开箱即用的方法更不安全,因为它提供了一种错误的安全感。
我相信这可以通过使用使用自定义流处理程序的自定义 View 类来实现。
这种实现的细节由 Rob Allen 在http://akrabat.com/zend-framework/a-view-stream-with-zend_view/提供。