gpt4 book ai didi

grails - 我什么时候需要在 Grails 中使用多个编解码器进行编码?

转载 作者:行者123 更新时间:2023-12-02 15:45:50 25 4
gpt4 key购买 nike

我不清楚何时(或是否)我应该使用多个 Grails encodeAsXXX 调用。

这个引用说你需要 encodeAsURL 然后 encodeAsJavaScript:http://grailsrocks.com/blog/2013/4/19/can-i-pwn-your-grails-application

它还说你需要encodeAsURL然后encodeAsHTML,我不明白为什么在显示的情况下这是必要的,但不是所有的时间?

还有其他情况我应该使用多个链式编码器吗?

如果我渲染一个指向 HTML 属性的 URL,我应该先 encodeAsURL 还是 encodeAsHTML?

如果我将 URL 渲染为作为 HTML 文档的一部分(通过 SCRIPT 元素)发送的 JavaScript 变量,我应该先 encodeAsURL、encodeAsJavaScript 然后 encodeAsHTML?

如果我将字符串呈现为作为 HTML 文档的一部分发送的 JavaScript 变量,我应该先 encodeAsJavaScript 还是 encodeAsHTML?

官方文档 - https://docs.grails.org/latest/guide/security.html - 不要显示多个链接编码器的任何示例。

除了找到所有编码器的来源并查看它们编码的内容以及接收端有效的内容之外,我无法理解我如何理解在这里做什么 - 但我认为这对开发人员来说不应该那么难,可能是我遗漏了一些简单的东西,或者我还没有找到一些说明。

FWIW,我认为我正在谈论的编码器是这些:

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/JavaScriptUtils.html#javaScriptEscape-java.lang.String-

https://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html#encode(java.lang.String,%20java.lang.String)

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/util/HtmlUtils.html#htmlEscape-java.lang.String-
.

最佳答案

始终考虑 XSS 当然很重要,但在阅读您的问题时,我认为您高估了您需要做的事情。只要您使用的是 Grails 2.3 或更高版本,并且您的 grails.views.default.codec设置为 html默认情况下,所有在 GSP 中呈现的内容都带有 ${}将为您正确逃脱。

只有当您有意绕过转义时,例如如果您出于某种原因需要将经过 sanitizer 的用户输入返回到 GSP 中的有效 JavaScript 中,您才需要使用 encodeAsXXX方法或类似方法。

我会争辩说(并且文章也提到了这一点)无论如何这应该会引起一种气味,因为您可能应该将该 JavaScript 封装在不同的文件或 TagLib 中,在其中处理转义。

最重要的是,仅当您覆盖默认的 HTML 编码时才使用编码方法,否则 ${}为你处理。

关于grails - 我什么时候需要在 Grails 中使用多个编解码器进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48178363/

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