我们打算将Firebase匿名身份验证和实时数据库用于我们的Android应用程序。然后,我们想尝试一下是否可以将Firebase Api密钥用于其他应用程序来访问数据库,并创建一个具有相同程序包名称的假应用程序,将现有的Firebase Api密钥放入其中,然后使用全新的Sign密钥对其进行签名。一旦运行它,它就可以访问我们以前的应用程序的Firebase后端。 (由于可以轻松地从apk提取Firebase Api密钥,因此我们希望模拟相同的操作)
尽管大多数答案都说Firebase检查了App的签名,但我们能够使用完全不同的APK访问数据库。
我在Firebase配置方面是否缺少任何内容?
编辑:
我逐步进行的操作:
1)创建一个新的Android项目,其程序包名称与现有的相同。
2)将现有项目的google-services.json放到新项目中
3)将以下代码写入新项目
final FirebaseAuth mAuth;
mAuth = FirebaseAuth.getInstance();
FirebaseUser currentUser = mAuth.getCurrentUser();
final String TAG = "AuthTest";
mAuth.signInAnonymously()
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "signInAnonymously:success");
FirebaseUser user = mAuth.getCurrentUser();
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "signInAnonymously:failure", task.getException());
}
}
});
4)使用全新的签名密钥对APK进行了签名
5)在设备上运行应用程序。
结果:在我们现有的Firebase项目上创建了一个匿名用户