小编典典

JSON安全最佳做法?

ajax

在研究JSON与XML的问题时,我遇到了这个问题。现在,选择JSON的原因之一是Java的易于转换,即使用eval()。现在,从安全角度来看,这立即使我感到潜在的问题。

因此,我开始对JSON的安全性方面进行研究,并在此博客文章中就JSON的安全性不如人们认为的那样进行了研究。这部分突出:

更新: 如果您正确地执行JSON
100%,那么您只会在顶层拥有对象。数组,字符串,数字等都将被包装。然后,JSON对象将无法执行eval(),因为JavaScript解释器会认为它正在查看的是块而不是对象。这对于防止这些攻击有很长的路要走,但是仍然最好使用不可预测的URL保护您的安全数据。

好的,这是一个很好的开始规则:顶级的JSON对象应该始终是对象,而不是数组,数字或字符串。听起来对我来说是个好规则。

关于JSON和AJAX相关的安全性,还有其他事情要做或避免吗?

以上引用的最后一部分提到了不可预测的URL。是否有人对此有更多信息,特别是您如何使用PHP?与Java相比,我在Java方面的经验要丰富得多,并且在Java中这很容易(因为您可以将整个URL映射到单个servlet),而我所做的所有PHP都将单个URL映射到了PHP脚本。

另外,您如何精确地使用不可预测的URL来提高安全性?


阅读 379

收藏
2020-07-26

共1个答案

小编典典

博客(CSRF)的主要安全漏洞不是特定于JSON的。相反,使用XML就像是一个大漏洞。确实,根本没有异步调用也很糟糕。常规链接同样容易受到攻击。

当人们谈论唯一的URL时,通常并不意味着http://yourbank.com/json-api/your-name/big-long-key-
unique-to-you/statement。取而代之的是,使请求的其他特征变得唯一是更常见的。即FORM帖子中的值或URL参数。

通常,这涉及将随机令牌插入服务器端的FORM中,然后在发出请求时进行检查。

数组/对象对我来说是个新闻:

脚本标签:攻击者可以嵌入一个指向远程服务器的脚本标签,浏览器将为您有效地eval()答复,但是它丢弃了响应,并且由于JSON都是响应,因此您很安全。

在这种情况下,您的站点完全不需要使用JSON即可受到攻击。但是,是的,如果攻击者可以将随机HTML插入您的网站,那么您就敬酒了。

2020-07-26