【问题标题】:Is Firebase E-mail Auth example secure?Firebase 电子邮件身份验证示例是否安全?
【发布时间】:2016-06-23 12:41:24
【问题描述】:

我正在尝试 Firebase 的 JS SDK,自然而然地,我选择了提供的示例并开始深入研究。

The example code 用于电子邮件登录,托管在 Firebase 上。

令我惊讶的是,所有密码合规性都是在客户端完成的:

...
    function toggleSignIn() {
      if (firebase.auth().currentUser) {
        // [START signout]
        firebase.auth().signOut();
        // [END signout]
      } else {
        var email = document.getElementById('email').value;
        var password = document.getElementById('password').value;
        if (email.length < 4) {
          alert('Please enter an email address.');
          return;
        }
        if (password.length < 4) {
          alert('Please enter a password.');
          return;
        }
...

是什么机制阻止某人在控制台中打开代码、删除检查以及在空字符串下注册为电子邮件/密码?

搜索 firebase 安全性只告诉我一切都是用 HTTPS 制作的,而且服务器端规则是可定制的,以防止任何未登录的人编辑数据库,但是这个呢?

【问题讨论】:

    标签: javascript security firebase firebase-authentication


    【解决方案1】:

    您链接到的示例代码来自Firebase email+password authentication provider 的文档。我建议也阅读文档页面,而不是只是单独阅读示例代码。

    当我尝试使用短密码 (123) 创建用户时,Firebase 身份验证服务器会响应:

    {code: "auth/weak-password", message: "密码长度必须为 6 个字符以上。"}

    如您所见,服务器也会验证密码的强度。

    在客户端和服务器端都执行验证是很常见的。

    • 验证必须在服务器上执行,以确保它们不会被黑客入侵,正如你所说。
    • 通过还在客户端验证值,您可以确保更好的用户体验。在此示例中:您可以避免在用户输入无效电子邮件地址的情况下往返服务器。

    【讨论】:

    • 您的链接指向该文档的 Android 版本,我认为您的意思是将我指向 Web version。我会记住你的建议。
    • 是的,我使用 JavaScript 进行了测试,但复制了错误的链接。现已修复。
    • 对 Firebase 的唯一要求是它应该是 6 个字符长吗?这是否意味着像 aaaaaa 这样的密码足以被接受?
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2018-02-10
    • 2021-03-26
    • 1970-01-01
    • 2015-12-26
    • 2020-11-22
    • 2019-05-20
    • 2017-08-10
    相关资源
    最近更新 更多