CSRF和Ajax:我需要保护吗?

时间:2011-01-30 00:23:24

标签: ajax csrf

我是否需要在我的ajax请求中使用csrf标记?

我认为有人欺骗我的用户从其他网站执行恶意ajax请求到我的网站会因为原始政策失败,这是由浏览器处理的,我是对的吗?

我不关心使用ajax时的重复请求,我只是询问攻击。 如果我在我的ajax请求中不使用csrf,我是否有风险?

3 个答案:

答案 0 :(得分:1)

根据我的研究, 我们可以通过使用POST请求来减少漏洞(对于会产生副作用的请求)。但事实是,我们可以使用表单提交来伪造POST请求,因为同一原始策略不会将纯HTML应用于提交。但它适用于使用JS生成的请求。

因此,如果您使用ajax POST请求,并且在使用JSON有效负载时是安全的。 原因url编码的有效负载(POST请求)可以伪造其他站点的表单提交。 如果您使用JSON,因为无法使用html表单提交发送纯文本付费加载(使用out urlform编码),您将是安全的。因为如果使用urlform编码数据有效负载,使用ajax POST请求可以使用POST表单提交伪造。

答案 1 :(得分:0)

您使用Ajax的事实并不意味着其他人也必须这样做。您的服务器将无法区分XHR发出的请求与<form>提交的请求。 (是的XHR通常添加一个标识自己的标题,但这并不难以欺骗。)

所以,是的,你需要考虑CSRF攻击。

修改

Django有a POC,这就是他们and Ruby on Rails现在对AJAX请求实施CSRF保护的原因。

再一次,请在downvoting之前检查你的事实,并解释downvote的用途。

答案 2 :(得分:0)

这就是我们在Ajax请求中解决CSRF令牌问题的方法 http://mylifewithjava.blogspot.com/2010/11/implicit-csrf-protection-of-ajax_22.html