繁体   English   中英

CSRF和Ajax:我需要保护吗?

[英]CSRF and Ajax: Do I need protection?

我需要在ajax请求中使用csrf令牌吗?

我认为有人欺骗我的用户以执行从另一个站点到我的站点的恶意ajax请求,这将由于浏览器处理的源策略而失败,对吗?

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

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

因此,如果您使用ajax POST请求,并且使用JSON负载则是安全的。 原因url编码的有效负载(POST请求)可以与其他站点提交的表单一起伪造。 如果您使用JSON,因为无法发送带有html表单提交的纯文本有效载荷(不带urlform编码),那么您是安全的。 因为使用ajax POST请求,如果您使用urlform编码的数据有效负载,则可以使用POST表单提交来伪造它。

您正在使用Ajax的事实并不意味着其他人也必须这样做。 您的服务器将无法区分XHR和<form>提交的请求。 (是的,XHR通常会添加一个标识自己的标头,但这并不容易被欺骗。)

因此,是的,您确实需要考虑CSRF攻击。

编辑

Django有一个POC ,这就是为什么他们和Ruby on Rails现在对AJAX请求实现CSRF保护。

再一次,请在减票之前检查您的事实,并说明减票的用途。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM