【发布时间】:2013-12-19 23:41:36
【问题描述】:
根据马克·帕尔默的说法
简而言之,保护您的应用免受代码注入 XSS 攻击 你必须:
将配置中的默认 grails.views.default.codec 设置为“HTML”
好的。 因此,如果我的 Config.groovy 中有以下内容
grails.views.default.codec = "none"
在我的控制器中,我添加:
def afterInterceptor = { model ->
model.headerJs = "alert('bingo for '+[$params.unitId]);"
}
在我的 GSP 中:
<r:script disposition="head">${headerJs}</r:script>
它有效。我在查看源代码时看到了预期的 javascript 警报,并在页面提供时收到了警报。
但是,如果我在 Config.groovy 中应用建议的更改:
grails.views.default.codec = "html"
我的 GSP 呈现
<script type="text/javascript">alert('halooba for '+[1]);</script>
我可以看到非常安全。
我使用这个应用程序的目标是在域中为客户存储自定义 JS sn-ps、各种属性和其他值。这些值将由我们的管理员(而不是客户)输入。根据谁使用 HTTP 请求调用页面,例如 www.mydomain.com/ThisApp/?customerId=13423 (但编码的 customerId),我将从我的控制器调用服务以获取客户的相关设置域并将它们注入 GSP。
我知道我可以将 JS 和 CSS 放入文件中,然后使用 Resources Plugin 将它们正确导入,但我也在研究这种方法以进行特定的自定义。
因此,要遵循这种安全方法,我需要能够取消编码,或者我需要确定另一种方法,将 javascript 包含到不对其进行编码的 GSP 中。
有什么建议吗?
谢谢!
【问题讨论】:
-
问题需要由code=html改为codec=html