使用Firebase电子邮件/密码身份验证进行CSRF保护

时间:2018-01-29 16:14:48

标签: node.js security authentication firebase-authentication csrf

我正在努力将我的Node.js应用程序部署到生产环境中。我们遇到了一些CSRF问题,但在深入研究问题并更多地了解CSRF攻击后,我想知道我们是否需要执行这些检查。

我们的API通过CSRF检查列入白名单,因此我们依赖API的移动应用可以正常运行(我们正在努力确保当前的安全)。在Web前端,我们允许用户注册/登录并创建/编辑他们的数据。我们使用Firebase的电子邮件/密码身份验证系统来执行身份验证(https://firebase.google.com/docs/auth/web/password-auth)。据我了解,这意味着我们不必担心CSRF对注册和登录的攻击,因为Firebase会对此进行处理。我的问题是:如果我们确保我们的用户在我们的应用程序中的每个邮政路线上使用Firebase进行身份验证,这是否意味着我们不必担心CSRF攻击?

1 个答案:

答案 0 :(得分:13)

当您保存会话cookie时,CSRF会成为一个问题。 Firebase Auth当前在Web存储(localStorage / indexedDB)中保留Auth State,并且不会沿请求传输。您需要运行客户端代码以获取Firebase ID令牌并通过标头或POST正文等将其传递给请求。在后端,您将在提供受限内容或处理经过身份验证的请求之前验证ID令牌。这就是为什么在目前的形式中,CSRF不是问题,因为需要Javascript从本地存储中获取ID令牌,而本地存储是单个主机来源,因此无法从不同的来源访问它。

如果您计划在Cookie中保存ID令牌或在Firebase身份验证后设置自己的会话Cookie,那么您应该考虑防范CSRF攻击。