作者:openap卍巛i_r肀eport1 | 来源:互联网 | 2023-05-16 16:08
1> mimming..:
更新(20160611):如果您在https://firebase.google.com上创建了项目,则从服务器访问数据库的步骤会有所不同.请参阅此答案:Firebase 3中是否仍可以对令牌进行服务器端验证?
有两种方法可以执行此操作:生成服务器身份验证令牌,或使用Firebase密钥.
生成服务器令牌
您可以使用为自定义登录创建的相同令牌生成器库来生成可以从服务器使用的令牌.然后,您可以根据安全规则提供对此服务器的特殊访问权限.
以下是步骤:
获取服务器语言/平台的令牌生成器库.Node.js和Java服务器往往效果最好.
使用预先选择的uid生成令牌.如果您正在编写node.js服务器,则代码可能如下所示:
var FirebaseTokenGenerator = require("firebase-token-generator");
var tokenGenerator = new FirebaseTokenGenerator("");
var token = tokenGenerator.createToken(
{uid: "my-awesome-server"},
{ expires: });
使用令牌验证您的客户端.这里有更多的node.js代码:
var ref = new Firebase("https://.firebaseio.com/");
ref.authWithCustomToken(token, function(error, authData) {
...
});
如果您的服务器语言没有客户端,例如PHP,请使用REST请求的令牌作为auth
参数.
更新您的安全规则以授予您的服务器特殊权限(由uid标识),例如允许对整个Firebase进行读取访问的简单规则
{
"rules": {
".write": false,
".read": "auth.uid === 'my-awesome-server'"
}
}
访问所有数据,做一些很棒的东西.
好处
这是Firebase官方推荐的验证服务器身份的方法.
您的服务器将遵守验证规则.
服务器只是另一个用户.您可以使用安全规则来提供对数据的细粒度访问.
由于访问是细粒度的,因此服务器中的错误不太可能导致损坏,例如删除根节点.
Firebase的秘密
如果您是喜欢生活在边缘的开发人员,并且sudo
可以直接使用您的Firebase密钥进行身份验证.
但说真的,不要这样做.这很危险.
不这样做的原因
就像盲目使用一样sudo
,它非常危险.
您的服务器不会遵守您的验证规则.
您的服务器对Firebase的完全读/写访问权限.如果它有一个丑陋的bug,它可能会删除或破坏没有业务访问的数据.
您的秘密最终会出现在更多地方(可能是出站请求日志等).如果它出来你会面临更大的风险.