0

Perhaps I'm just not understanding the documentation just yet when it comes to Escaping JS and CSS. Currently I'm reading this section: http://zf2.readthedocs.org/en/latest/modules/zend.escaper.escaping-javascript.html

In my current View I have the following: (Works just fine)

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

After reviewing the documentation I assume I should be doing this instead?

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

The same would be for include CSS Files using escapeCss().

4

1 回答 1

1

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

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

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

因此,我认为解决您的问题的方法是根本不做您想做的事情,并按照您的第一个示例继续做。

于 2013-07-09T22:04:55.907 回答