在研究JSON 与 XML的问题时,我遇到了这个问题。现在,更喜欢 JSON 的原因之一被列为 Javascript 中易于转换的原因,即eval()
. 现在,从安全的角度来看,这立即让我感到潜在的问题。
因此,我开始对 JSON 的安全性方面进行一些研究,并通过这篇博文了解JSON如何不像人们认为的那样安全。这部分突出:
更新:如果您 100% 正确地执行 JSON,那么您将只有顶级对象。数组、字符串、数字等都将被包装。一个 JSON 对象将无法 eval() 因为 JavaScript 解释器会认为它正在查看一个块而不是一个对象。这对于防范这些攻击大有帮助,但最好还是使用不可预测的 URL 来保护您的安全数据。
好的,这是一个很好的开始规则:顶级的 JSON 对象应该始终是对象,而不是数组、数字或字符串。对我来说听起来是个好规则。
关于 JSON 和 AJAX 相关的安全性,还有什么需要做或避免的吗?
上面引用的最后一部分提到了不可预测的 URL。有没有人有更多关于这方面的信息,尤其是你如何在 PHP 中做到这一点?我在 Java 方面比 PHP 更有经验,而且在 Java 中很容易(因为您可以将整个范围的 URL 映射到单个 servlet),而我所做的所有 PHP 都将单个 URL 映射到 PHP 脚本。
此外,您究竟如何使用不可预测的 URL 来提高安全性?