我注意到GSON HTML-escapes <和>字符,可以使用disableHtmlEscaping()builder配置方法禁用它.但我的问题是 - 为什么GSON默认会进行HTML转义?没有HTML转义的风险有哪些?
谢谢.
其实,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转义字符的信息.
| 归档时间: |
|
| 查看次数: |
10923 次 |
| 最近记录: |