首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Grails Resources插件编码问题的代码= html

Grails Resources插件编码问题的代码= html
EN

Stack Overflow用户
提问于 2013-12-19 23:41:36
回答 3查看 661关注 0票数 1

据Marc说

防止XSS攻击

简而言之,为了保护应用程序免受代码注入XSS的攻击,您必须: 将配置中的默认grails.views.default.codec设置为"HTML“

好的。所以如果我在我的Config.groovy中有下面这个

代码语言:javascript
运行
复制
grails.views.default.codec = "none"

在“我的主计长”中,我补充如下:

代码语言:javascript
运行
复制
def afterInterceptor = { model ->   
    model.headerJs = "alert('bingo for '+[$params.unitId]);"
}

在我的普惠制中:

代码语言:javascript
运行
复制
<r:script disposition="head">${headerJs}</r:script>

它起作用了。我看到了预期的javascript警报,当我做查看源,我得到我的警报,当页面服务。

但是,如果在Config.groovy中我应用了建议的更改:

代码语言:javascript
运行
复制
grails.views.default.codec = "html"

我的普惠制呈现

代码语言:javascript
运行
复制
<script type="text/javascript">alert(&#39;halooba for &#39;+[1]);</script>

我看得出来很安全。

我使用这个应用程序的目标是在域中为客户保存自定义的JS片段、各种属性和其他值。这些值将由我们的管理员(而不是客户)输入。基于谁使用HTTP请求调用页面,例如www.mydomain.com/ThisApp/?customerId=13423 (但是编码的customerId),我会从Controller调用Services,从域获取客户的相关设置,并将它们注入GSP。

我知道我可以将JS和CSS放入文件中,然后使用参考资料插件来正确地引入它们,但我也在查看此方法以进行特定的自定义。

因此,要遵循这个安全方法,我要么需要对其进行反编码,要么需要确定另一个方法将javascript包含到不对其编码的GSP中。

有什么建议吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-19 23:53:10

您可以建议Grails不要使用GSP中可用的原(),如下所示:

代码语言:javascript
运行
复制
<r:script disposition="head">${raw(headerJs)}</r:script>
票数 0
EN

Stack Overflow用户

发布于 2013-12-20 01:54:37

对于Grails2.2.x及更低版本,您可以将建议的编码放在Config.groovy中:

代码语言:javascript
运行
复制
grails.views.default.codec = "html"

并使用Taglib引入安全的、不应被HTML编码的值:

代码语言:javascript
运行
复制
<r:script><com_myapp:getJSDeferred  unitId="${params.unitId}" /></r:script>

它会变成原始的。

票数 0
EN

Stack Overflow用户

发布于 2014-05-06 20:23:14

FYI:上面的解决方案不允许JSON输出分配给javascript变量。我的解决办法是,假设您将model.data定义为hashmap:

代码语言:javascript
运行
复制
var someVar= ${raw(data as JSON).toString())};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20693831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档