Json GSON disableHtmlEscaping-为什么GSON HTML在默认情况下首先转义?
我注意到GSON HTML转义Json GSON disableHtmlEscaping-为什么GSON HTML在默认情况下首先转义?,json,gson,Json,Gson,我注意到GSON HTML转义字符,这可以通过使用disableHtmlEscaping()builder配置方法来禁用。但我的问题是——为什么GSON默认情况下会进行HTML转义?不逃避任何东西有什么风险 谢谢。实际上,disableHtmlEscaping()方法告诉Gson不要转义HTML字符,例如,&,=和' 一个例子,其中一个单引号会引起问题:在HTML页面中的标记中呈现未经转换的JSON,而不使用额外的标记 乔尔·莱奇写道。以下是要点: 诸如,=,等等的字符被转义,因为如果Gson计
字符,这可以通过使用disableHtmlEscaping()
builder配置方法来禁用。但我的问题是——为什么GSON默认情况下会进行HTML转义?不逃避任何东西有什么风险
谢谢。实际上,
disableHtmlEscaping()
方法告诉Gson不要转义HTML字符,例如
,&
,=
和'
一个例子,其中一个单引号会引起问题:在HTML页面中的
标记中呈现未经转换的JSON,而不使用额外的
标记
乔尔·莱奇写道。以下是要点:
诸如,=,等等的字符被转义,因为如果Gson计算的JSON字符串嵌入到XHTML页面中,那么我们不知道该JSON字符串实际上包含哪些字符。因此,如果有一个打开的引号,那么嵌入的JSON后面跟着一个关闭的引号,那么我们不知道会发生什么。如果Gson字符串包含一个abc=123,并且恰好定义了一个“var abc”,那么页面中嵌入的Gson输出可能会导致为abc JavaScript变量赋值123。同样的事情也可能发生在<和>甚至&
对于空格转义,\t是制表符的转义字符。同样,\n和\r是换行符和回车符的转义字符。像这样转义空白应该确保任何编辑器都会显示正确的空白(如果编辑器正确计算这些转义字符)
和类包含有关Gson转义的完整字符集的更多信息。感谢您为我指出了该线程。话虽如此,我仍然认为默认情况下不会进行HTML转义,如果有人想通过HTML传输JSON,我认为在这种情况下显式转义没有问题。这显然是一个安全决策。由于JSON在HTML中被广泛使用,因此将其默认为更安全的状态是有意义的。明确地转向该特征为某人提供了一个机会来考虑为什么逃跑,并希望抓住一些幼稚的错误。顺便说一句,我发现这个线程是因为我正在研究删除默认设置的安全性影响。那么从安全角度来看,disableHtmlEscaping()是好的吗?而且应该经常打电话吗?我的理解正确吗?