javascript – JSON安全最佳做法?

在研究JSON vs XML的问题时,我遇到了this question.现在,喜欢JSON的原因之一是Javascript的转换容易性,即eval()。现在,从安全的角度来看,这立刻打击了我的潜在问题。

所以我开始做一些研究JSON的安全方面和整个这篇博文关于JSON is not as safe as people think it is.这部分突出:

Update: If you are doing JSON 100%
properly, then you will only have
objects at the top level. Arrays,
Strings, Numbers, etc will all be
wrapped. A JSON object will then fail
to eval() because the JavaScript
interpreter will think it’s looking at
a block rather than an object. This
goes a long way to protecting against
these attacks, however it’s still best
to protect your secure data with
un-predictable URLs.

好吧,这是一个很好的规则开始:在顶层的JSON对象应该总是对象,永远不是数组,数字或字符串。听起来像是一个很好的规则。

当涉及JSON和AJAX相关的安全性时,还有什么要做或避免的吗?

上述报价的最后一部分提到不可预测的网址。有没有人有更多的信息,特别是你如何在PHP?我在Java比PHP更有经验,在Java它很容易(因为你可以映射一个完整的URL范围到一个单一的servlet),而我所做的PHP映射了一个单一的URL到PHP脚本。

此外,您如何使用不可预测的网址来提高安全性?

博客(CSRF)的主要安全漏洞,不是JSON特定的。它只是使用XML的一个大洞。事实上,它没有异步调用一样糟糕;常规链接也同样脆弱。

当人们谈论唯一的URL时,他们通常不意味着http://yourbank.com/json-api/your-name/big-long-key-unique-to-you/statement.相反,它是更常见的做一些关于请求的独特的;即FORM帖子中的值或URL参数。

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

数组/对象的东西是我的新闻:

Script-Tags: The attacker can embed a
script tag pointing at a remote server
and the browser will effectively
eval() the reply for you, however it
throws away the response and since
JSON is all response, you’re safe.

在这种情况下,您的网站不需要使用JSON是脆弱的。但是,如果攻击者可以插入随机HTML到您的网站,你是烤面包。

http://stackoverflow.com/questions/395592/json-security-best-practices

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – JSON安全最佳做法?