如果我计划实施多应用API,是否应该使用CSRF?

时间:2014-10-08 03:33:10

标签: angularjs laravel csrf laravel-routing csrf-protection

我正在创建一个Laravel API / AngularJS Monster。完全将它们分离出来的想法(Frontend,DB,API)主要是因为我想进入应用程序开发并将所有事物分开,因此API可以完成所有繁重的工作。因此,在未来,我打算制作接口,我将是唯一一个使用OS X / iOS / Native应用程序的接口。

然而,我正在寻找在线的东西,并遵循一些设置和教程,我发现CSRF是一件好事,实施起来,似乎是安全的,也是正确的事情......

但它是否一定适合API?

使用API​​有哪些安全措施?

我现在唯一真正了解的是会话cookie和在我的应用程序中使用HTTPS。

1 个答案:

答案 0 :(得分:1)

如果在客户端访问API,那么是的,您需要CSRF保护。

这假定从前端使用cookie(或其他身份验证机制),从JavaScript传递到您的API,然后启动操作或返回内容。

对于启动操作的项目(即non safe methods - RFC 7231),您需要发送某种CSRF令牌(例如推荐的Synchronizer Token PatternDouble Submit Cookies),尽管还有其他防止CSRF的有效方法,例如检查X-Requested-WithOrigin标头。

无论您选择哪种方法,您都可以在应用中实施此身份验证。从自定义应用程序中检索令牌或cookie值很简单,或者传递额外的头文件也很容易。此CSRF保护对您的网站有用的原因是浏览器会限制哪些其他域可以读取令牌或因Same Origin Policy而发送标头。如果您的API位于其他域中,CORS可用于仅允许从您的网站域访问,尽管听起来您已经过了这个阶段。请记住使用HTTPS保护您的API,并在任何Cookie上设置Secure flag,您还应考虑使用HSTS进一步保护您的API和网站。