我正在重新发明轮子并在 Java 中创建自己的 JSON 解析方法。
我正在阅读 json.org上的(非常好的!)文档。我不确定的唯一部分是它在哪里说“或控制字符”
由于文档非常清晰,而且 JSON 非常简单且易于实现,我想我会继续要求规范而不是松散。
如何正确去除 Java 中的控制字符?也许有一个unicode范围?
编辑:一个(通常?)拼图缺失的部分
我被告知在定义的范围 1 2之外还有其他控制字符在<script>
标签中可能很麻烦。
最值得注意的是字符 U+2028 和 U+2029、行和段落分隔符,它们充当换行符。在字符串文字中间注入换行符很可能会导致语法错误(未终止的字符串文字)。3
虽然我相信这不会构成 XSS 威胁,但在<script>
标签中添加额外的使用规则仍然是一个好主意。
- 只需简单并使用
\u
符号对所有非“ASCII 可打印”字符进行编码。这些角色一开始并不常见。如果您愿意,您可以添加到白名单中,但我推荐使用白名单方法。 - 如果您不知道,请不要忘记(
</script
不区分大小写),这可能会导致 HTML 脚本注入带有字符的页面</script><script src=http://tinyurl.com/abcdef>
。默认情况下,这些字符都不是以 JSON 编码的。