GSON disableHtmlEscaping - 为什么GSON HTML首先默认转义?

Wan*_*All 8 json gson

我注意到GSON HTML-escapes <>字符,可以使用disableHtmlEscaping()builder配置方法禁用它.但我的问题是 - 为什么GSON默认会进行HTML转义?没有HTML转义的风险有哪些?

谢谢.

Asi*_*tto 7

其实,disableHtmlEscaping()方法告诉GSON不是逃避HTML字符,如<,>,&,=,和'.

导致问题的单引号的示例:<script/>在HTML页面的标记中呈现未转义的JSON 而不使用其他<![CDATA[ ... ]]>标记.

Joel Leitch 对类似的问题了很好的回答.以下是亮点:

诸如<,>,=等字符是转义的,因为如果Gson评估的JSON字符串嵌入在XHTML页面中,那么我们不知道实际包含此JSON字符串的字符是什么.因此,如果有一个开放的报价,那么嵌入的JSON后跟一个收盘报价,那么我们不知道会发生什么.也许如果Gson字符串包含abc = 123并且恰好有一个"var abc"定义,则页面中嵌入的Gson输出可能会导致abc JavaScript变量被赋值为123.同样的事情可能发生在<和>甚至&.

至于空格转义,\ t是标签的转义字符.同样,\n和\ r是换行符和回车符的转义字符.像这样转义空格应确保任何编辑器都显示正确的空格(如果编辑器正确评估这些转义字符).

逃避者JsonWriter类包含在一套完整的GSON转义字符的信息.

  • 谢谢你指着我的话.话虽如此 - 我仍然认为默认情况下没有理由进行HTML转义 - 如果有人想通过HTML传输JSON - 我认为在这种情况下明确地逃避它是没有问题的. (6认同)