Skip to main content

12. Security Considerations (安全考虑)

通常,在设计安全系统时,当接收到可能由敌对来源生成的任何数据时,需要特别小心。JSON是这类数据的常见格式。

JSON的一个众所周知的风险是,某些JSON文本在JavaScript解释器中的评估可能会导致安全漏洞的执行。通常,最安全的做法是使用特定的JSON解析器,而不是将JSON文本传递给JavaScript的 eval() 函数或类似机制。

由于JSON的语法是从JavaScript借用的,因此可以使用该语言的 eval() 函数来解析大多数JSON文本(但不是全部;某些字符,如U+2028行分隔符 (LINE SEPARATOR) 和U+2029段落分隔符 (PARAGRAPH SEPARATOR) 在JSON中是合法的,但在JavaScript中不合法)。这通常构成不可接受的安全风险,因为文本可能包含可执行代码和数据声明。同样的考虑适用于在任何其他编程语言中使用类似 eval() 的函数,其中JSON文本符合该语言的语法。