gpt4 book ai didi

代码 = html 的 Grails 资源插件编码问题

转载 作者:行者123 更新时间:2023-12-02 14:52:56 24 4
gpt4 key购买 nike

根据马克·帕尔默

Preventing XSS attacks

In a nutshell, to protect your app from code injection XSS exploits you must:

Set the default grails.views.default.codec in config to "HTML"



好的。
所以如果我在我的 Config.groovy 中有这个
grails.views.default.codec = "none"

在我的 Controller 中,我添加:
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(&#39;halooba for &#39;+[1]);</script>

我可以看到这是非常安全的。

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

我知道我可以将 JS 和 CSS 放入文件中,然后使用资源插件将它们正确导入,但我也在研究这种方法以进行特定的自定义。

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

有什么建议么?

谢谢!

最佳答案

您可以使用 raw() 建议 Grails 不要逃逸。在 GSP 中可用:

<r:script disposition="head">${raw(headerJs)}</r:script>

关于代码 = html 的 Grails 资源插件编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20693831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com