使用RESTful API时是否需要CSRF验证?

时间:2014-04-22 13:11:48

标签: ajax rest symfony csrf fosrestbundle

以下内容写在FOSRestBundle的页面上:

" CSRF验证

构建应该通过HTML表单以及REST API处理表单的单个应用程序时,会遇到CSRF令牌验证问题。在大多数情况下,有必要为HTML表单启用它们,但将它们用于REST API是没有意义的。出于这个原因,有一个表单扩展来禁用具有特定角色的用户的CSRF验证。这当然要求REST API用户对自己进行身份验证并分配特殊角色。"

https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/2-the-view-layer.md#csrf-validation

这个解释是否正确?你能解释一下为什么它是正确的吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

CSRF令牌验证实际上并不用于实现RESTful Web服务,因为它违反了REST的初始原则( REST是无状态,没有客户端上下文,在服务器端保存)。相反,可以检查Referer Header(它不需要每用户状态)以及自定义头字段和GET参数的某种组合。如果您的API不公开,则应使用基于API密钥的身份验证或OAuth。