在研究JSON vs XML的问题时,我碰到了this question。现在,选择JSON的原因之一就是在Javascript中易于转换,即使用eval()
。从安全角度来看,这立即引起了我的潜在问题。JSON安全最佳实践?
因此,我开始对JSON的安全方面进行一些研究,并通过此博客文章讨论如何使用JSON is not as safe as people think it is。这部分伸出:
更新:如果你正在做的JSON 100%正确 ,那么你只会有 对象在顶层。数组, 字符串,数字等都将被 包裹。一个JSON对象然后将 以eval()失败,因为JavaScript解释器会认为它正在查看一个块而不是一个对象。这 很长一段时间,以防止这些攻击,但它仍然是最好的 保护您的安全数据与 不可预测的URL。
好吧,所以这是一个很好的规则,开始于:顶层的JSON对象应始终是对象而不是数组,数字或字符串。听起来对我来说是一个很好的规则。
当涉及到JSON和AJAX相关的安全性时,还有什么可以做或避免的吗?
上面引用的最后部分提到了不可预测的URL。有没有人有更多的信息,特别是你如何在PHP中做到这一点?我在Java方面比PHP更有经验,而且在Java中很容易(因为您可以将一系列URL映射到单个servlet),而我所做的所有PHP都将单个URL映射到PHP脚本。
此外,您究竟如何使用不可预知的URL来提高安全性?
我不明白这一点!当然,任何由浏览器发出的请求(对任何URL都是不可预测的或不可预测的)都可以通过控制台或一些花哨的GM脚本报告给用户。 – James 2008-12-28 00:38:12
“JSON并不像人们认为的那样安全”已经死了 – inf 2015-04-19 15:39:34