首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >REST和CSRF (跨站点请求伪造)

REST和CSRF (跨站点请求伪造)
EN

Stack Overflow用户
提问于 2010-01-08 04:25:12
回答 1查看 8.2K关注 0票数 14

是否可能针对无状态RESTful服务进行跨站点请求伪造?

我不是在谈论伪REST,在伪REST中,服务器会记住您是通过cookie登录的。我说的是纯无应用程序状态的服务器REST,没有cookie。

我正在使用SSL和基本身份验证。对于每个请求,Authorization标头都必须在那里。虽然在SSL级别上存在某种类型的会话,但在JSP意义上没有“会话”。

因此,假设我正在查看发出Ajax请求的合法web页面,不知何故,我转到相同选项卡或不同选项卡中的不同页面,该页面发出相同的Ajax请求。(我假设合法的网页上没有恶意代码;这是完全不同的事情,在这种情况下任何事情都是可能的。)

当第二个页面发出Ajax请求时,浏览器会放入相同的Authorization头吗?也就是说,浏览器会说“哦,你想再去一次吗?嘿,我只是碰巧还有钥匙!”?

另外,难道恶意脚本不能执行xhr请求,然后在回调中从ioargs获取请求,获取Authorization头并取消base64的名称和密码吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-08 23:05:08

免责声明:我不是安全专家。

使用HTTP Basic Auth无法阻止通过GET请求进行的CSRF攻击。例如,其他人可以在他们的HTML页面中包含一个img标签,该标签对一些众所周知的URI进行GET,您的浏览器将很乐意发送基本的身份验证信息。如果GET操作是“安全的”(这是任何声称是RESTful的第一规则),这就不会产生问题(除了浪费的带宽)。

由于同源策略,Ajax不是问题。

只有在您生成的HTML中包含服务器生成的令牌,并在表单提交请求中验证它的存在,才能防止其他人在其页面中简单地包含“外来”表单。您可以将其限制为由浏览器生成的内容类型;对于XHR请求,不需要这样做。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2023395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档