【发布时间】:2020-05-03 16:02:32
【问题描述】:
我有这个 JavaScript 代码,用户可以在其中使用他们的 google 帐户登录我的应用程序。
//firebase db congifurations
const config = {
apiKey: "my_api_key",
authDomain: "my-app.firebaseapp.com",
projectId: "my-app",
databaseURL: "https://my-app.firebaseio.com",
};
//signin callback implemented using - https://developers.google.com/identity/sign-in/web/sign-in
function onSignIn(googleUser) {
var profile = googleUser.getBasicProfile();
let fullName = profile.getName().split(" ");
let userName = profile.getEmail().replace(/@.*$/, "");
if (!firebase.apps.length) {
firebase.initializeApp(config);
}
this.database = firebase.database();
let userRef = this.database.ref("users/" + userName);
userRef.set({
firstName: fullName[0],
lastName: fullName[1],
displayPicture: profile.getImageUrl(),
});
}
当我执行此代码时,将调试器放在let userRef = this.database.ref("users/" + userName); 并尝试在控制台上运行:
userRef.set({
firstName: "Clutch",
lastName: "Prince",
displayPicture: "any_url_that_i_want_to_inject",
});
这个实际上被执行了,我的数据库受到了影响。有没有一种安全的方法来做到这一点?
我的实时数据库规则:
{
"rules": {
".read": true,
".write": true
}
}
【问题讨论】:
-
请张贴您的数据库规则的截图..
-
好的,现在说吧。谁想编辑您的数据库?所有用户还是只有你?
-
他们可以在控制台上编写的代码与他们在表单中输入相同的信息有什么区别?换句话说:什么你想防止?
-
@FrankvanPuffelen 看起来他不希望任何不受欢迎的客人编辑他的数据库。他已将规则设置为 TRUE,因此需要对其进行修改。 . .
-
@Dharmaraj 我希望通过按 google 按钮登录来创建新用户。我不希望一些随机的人从控制台进行数据库编辑。
标签: javascript firebase firebase-realtime-database firebase-authentication