Zend framework2 转义CSS/JS

Zend framework2 转义CSS/JS,zend-framework2,Zend Framework2,当涉及到转义JS和CSS时,也许我还不理解文档。目前我正在阅读本节: 在我目前的观点中,我有以下几点:(很好用) 在查看了文档之后,我想我应该这样做 $this->escapeJs($this->headScript()->appendFile($this->basePath() . '/asset/login/index.js', 'text/javascript')); 使用escapeCss()包含CSS文件也是如此。使用appendFile方法可以在HTML标记

当涉及到转义JS和CSS时,也许我还不理解文档。目前我正在阅读本节:

在我目前的观点中,我有以下几点:(很好用)

在查看了文档之后,我想我应该这样做

$this->escapeJs($this->headScript()->appendFile($this->basePath() . '/asset/login/index.js', 'text/javascript'));

使用escapeCss()包含CSS文件也是如此。

使用
appendFile
方法可以在HTML标记中引用外部脚本文件。尽管我从未使用过
escapeJs
view助手,但我认为可以肯定地说,它可以从字符串中转义JavaScript。您传递给它的是
appendFile
方法返回的任何内容(可能没有任何内容或对象)。这是毫无意义的,因为永远不会有任何有意义的逃避

我想,您试图做的是转义正在引用的脚本文件的内容。我看不出这样做的目的,我认为您误解了转义JavaScript(以及HTML)的目的。从安全角度来看,您希望避开这样的内容,这样用户就无法操纵您的页面,这可能会给其他用户带来风险。在本例中,您所做的是尝试转义自己的JavaScript代码。这首先意味着你的代码不会被你的浏览器解析和执行,而且它也没有意义,因为你自己的代码应该被足够信任,可以包含在你的页面中

您应该转义用户提供的数据(或来自数据库等数据源的数据),以防止跨站点脚本(XSS)攻击。在这种情况下,
escapeHtml
视图帮助程序非常方便,并且还将处理JavaScript和CSS,因为它们将嵌套在适当的标记中以生效


因此,我认为解决您的问题的方法就是不要做您想做的事情,而是按照您的第一个例子继续做。

谢谢。你解释这件事的方式真的帮助我更多地理解了事情,这正是我想要的。
$this->escapeJs($this->headScript()->appendFile($this->basePath() . '/asset/login/index.js', 'text/javascript'));