Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json GSON disableHtmlEscaping-为什么GSON HTML在默认情况下首先转义?_Json_Gson - Fatal编程技术网

Json GSON disableHtmlEscaping-为什么GSON HTML在默认情况下首先转义?

Json GSON disableHtmlEscaping-为什么GSON HTML在默认情况下首先转义?,json,gson,Json,Gson,我注意到GSON HTML转义字符,这可以通过使用disableHtmlEscaping()builder配置方法来禁用。但我的问题是——为什么GSON默认情况下会进行HTML转义?不逃避任何东西有什么风险 谢谢。实际上,disableHtmlEscaping()方法告诉Gson不要转义HTML字符,例如,&,=和' 一个例子,其中一个单引号会引起问题:在HTML页面中的标记中呈现未经转换的JSON,而不使用额外的标记 乔尔·莱奇写道。以下是要点: 诸如,=,等等的字符被转义,因为如果Gson计

我注意到GSON HTML转义
字符,这可以通过使用
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()是好的吗?而且应该经常打电话吗?我的理解正确吗?