2016-12-25 184 views
1

我有一个由简单的JSON API和React前端组成的应用程序。身份验证通过cookie进行处理,而前端服务来自我用于API的相同域。由于我不允许CORS,因此如果API只接受具有一些自定义标题的请求,例如如果X-Requested-With设置为XMLHttpRequest,那么API是否将受到保护以防止CSRF攻击?API CSRF保护

回答

1

攻击者可以在不违反同源策略(SOP)的情况下发送包含XMLHttpRequest的跨站请求 - 这里唯一的限制是攻击者的站点将无法看到响应。 Cookie包含在受害者浏览器发送的每个请求中,因此API调用仍然会与跨站点XHR一起触发,所以此API仍然易受CSRF攻击。

如果您不想进行任何安全体系结构更改,那么CSRF Prevention Cheat Sheet recommends checking the Origin header。本文档描述了其他方法,例如CSRF令牌同步器方法,它可以用作标题元素,并被认为是更强大的防御方法。

+0

谢谢。我通过在本地主机上运行但在不同端口上运行的两个应用验证了这一点我无法使用app2的跨站点DELETE请求销毁app1上的资源,但我可以使用POST创建一个。我的理解是,为了检查是否允许发送xhr,只有http选项请求将在所有情况下发送。 – rodic

+1

@rodic对于所有正确的世界的爱,请至少检查'Origin' - 我向你保证这是可利用的。可以避免飞行前的选项。 – rook

+0

嘿,如果它不清楚,我会采取您的意见,从原来的职位。只是想验证你说了什么,因为我认为sop的工作方式不同。再次感谢。 – rodic