当前位置: 首页 > 面试题库 >

您如何向Firebase验证服务器?

柏明亮
2023-03-14
问题内容

我有一个在Firebase上编写的应用程序。安全规则和客户端代码还不足以使我的应用正常工作。我需要连接服务器来执行一些任务:

  • 清理非规范化的数据,这对于使用onDisconnect处理程序进行清理具有挑战性
  • 建立数据的其他索引,这超出了 查询的能力范围

问题答案:

_更新日期(20160611):如果您在https://firebase.google.com上创建了项目,则从服务器访问数据库的步骤有所不同。

您可以通过两种方式执行此操作:生成服务器身份验证令牌或使用Firebase机密。

生成服务器令牌
您可以使用为“自定义登录”创建的相同令牌生成器库来生成可从服务器使用的令牌。然后,您可以根据安全规则提供对该服务器的特殊访问权限。

步骤如下:

  1. 获取适用于您服务器语言/平台的令牌生成器库。Node.js和Java服务器往往工作得最好。
  2. 生成带有预选uid的令牌。如果您正在编写一个node.js服务器,则代码可能看起来像这样:

    var FirebaseTokenGenerator = require("firebase-token-generator");
    

    var tokenGenerator = new FirebaseTokenGenerator(“ “);
    var token = tokenGenerator.createToken(
    {uid: “my-awesome-server”},
    { expires: });

  3. 使用令牌来验证您的客户端。这里是更多的node.js代码:

    var ref = new Firebase("https://<your-firebase>.firebaseio.com/");
    

    ref.authWithCustomToken(token, function(error, authData) {

    });

  4. 如果没有用于服务器语言的客户端(例如PHP),则将REST请求的令牌用作auth参数

  5. 更新您的安全规则,以授予由uid标识的服务器特殊权限,例如该简单规则,该规则允许对整个Firebase进行读取访问

    {
    "rules": {
        ".write": false,
        ".read": "auth.uid === 'my-awesome-server'"
    }
    

    }

  6. 访问所有数据,做一些很棒的事情。

优点

  • 这是Firebase官方推荐的验证服务器身份的方法。
  • 您的服务器将遵守验证规则。
  • 该服务器只是另一个用户。您可以使用安全规则来提供对数据的细粒度访问。
  • 由于访问是细粒度的,因此服务器中的错误不太可能造成损坏,例如删除根节点。

火力基地的秘密

如果您是那种乐于助人为乐的开发人员,并且喜欢sudo打字,那么您也可以直接使用Firebase机密进行身份验证。

但认真的说,不要这样做。这很危险。

不这样做的原因

  • 就像盲目使用一样sudo,这是非常危险的。
  • 您的服务器将不遵守您的验证规则。
  • 您的服务器具有对Firebase的完全读取/写入权限。如果它有一个丑陋的错误,它可能会删除或破坏没有业务访问权限的数据。
  • 您的秘密最终会出现在更多地方(可能出站请求日志中等等)。如果不解决,您将面临更多风险。


 类似资料:
  • 我要找的是一些别人如何解决这个问题的建议/经验。如果需要,我很乐意提供更多的信息。 为了让您更容易地给出建议,这里有两个选择的简短描述:1)使用JWT处理身份验证和授权?为什么?2)保持JWT的轻量级,并在每个微服务中向授权服务器发出请求?为什么?

  • 问题内容: 您应该在服务器端进行验证,还是可以在客户端进行验证? @TheTXI 我很高兴您感到惊讶,我只是不想遗漏任何可能改变某人答案的虚假信息。 似乎很多人都在关注我要追求的目标,但是应该将Ajax的一部分保留在我的问题中,因为这是最重要的部分。 但是,我阅读这些帖子后知道,一个坏人可以轻松地加载萤火虫并将我的按钮更改为“提交”按钮并进行发布。或其他方式。 问题答案: 浏览器/客户端验证很方便

  • 假设有两个微服务:订单和库存。order service中有一个API,它接受< code>ProductId 、< code>Qty等并下订单。 理想情况下,只有在库存服务中存在库存时才允许下订单。人们建议使用Saga模式或任何其他分布式事务。这很好,最终将利用一致性。 但是如果有人想滥用这个系统。他可以使用无效或缺货的产品(< code>ProductId)推送订单。系统将接受所有这些订单,并

  • 我正在进行一个项目,我们将在微服务架构中使用不同的服务,我们还希望使用一些Firebase服务。我正在开发一个身份验证服务器,它将铸造定制的JWT,用于Firebase和其他应用编程接口项目。 我们希望使用Firebase Auth SDK轻松与FB、谷歌、Twitter等集成,但我们需要用更多数据丰富用户的令牌。因此,我的思维过程是创建一个节点。使用Firebase Admin SDK执行此操作

  • 问题内容: 我刚刚用复选框设置了新的google recaptcha,它在前端工作正常,但是我不知道如何在服务器端使用PHP处理它。我尝试使用下面的旧代码,但是即使验证码无效,也会发送表格。 问题答案: 这是解决方案 index.html verify.php http://codeforgeek.com/2014/12/google-recaptcha- tutorial/