是否可能针对无状态RESTful服务进行跨站点请求伪造?
我不是在谈论伪REST,在伪REST中,服务器会记住您是通过cookie登录的。我说的是纯无应用程序状态的服务器REST,没有cookie。
我正在使用SSL和基本身份验证。对于每个请求,Authorization标头都必须在那里。虽然在SSL级别上存在某种类型的会话,但在JSP意义上没有“会话”。
因此,假设我正在查看发出Ajax请求的合法web页面,不知何故,我转到相同选项卡或不同选项卡中的不同页面,该页面发出相同的Ajax请求。(我假设合法的网页上没有恶意代码;这是完全不同的事情,在这种情况下任何事情都是可能的。)
当第二个页面发出Ajax请求时,浏览器会放入相同的Authorization头吗?也就是说,浏览器会说“哦,你想再去一次吗?嘿,我只是碰巧还有钥匙!”?
另外,难道恶意脚本不能执行xhr请求,然后在回调中从ioargs获取请求,获取Authorization头并取消base64的名称和密码吗?
发布于 2010-01-08 23:05:08
免责声明:我不是安全专家。
使用HTTP Basic Auth无法阻止通过GET请求进行的CSRF攻击。例如,其他人可以在他们的HTML页面中包含一个img标签,该标签对一些众所周知的URI进行GET,您的浏览器将很乐意发送基本的身份验证信息。如果GET操作是“安全的”(这是任何声称是RESTful的第一规则),这就不会产生问题(除了浪费的带宽)。
由于同源策略,Ajax不是问题。
只有在您生成的HTML中包含服务器生成的令牌,并在表单提交请求中验证它的存在,才能防止其他人在其页面中简单地包含“外来”表单。您可以将其限制为由浏览器生成的内容类型;对于XHR请求,不需要这样做。
https://stackoverflow.com/questions/2023395
复制相似问题