好的,我正在创建一个web应用程序。
web应用程序基本上是一个游戏,在这个游戏中你有很多分数。通过正确回答加法题,你可以得到更多的分数。
我正在使用firebase实时数据库来保存用户的分数。这是每当用户正确回答问题时我运行的代码:(
document.getElementById("score").innerText
是当前分数)
var user = firebase.auth().currentUser;
firebase.database().ref('users/' + user.uid).set({
score: parseInt(document.getElementById("score").innerText) + 2,
}).catch(function(error) {
console.log(error);
});
所以效果不错。但是,我发现,用户可以获取该代码,并将其放在控制台中,从而获得无限点数。
那我该怎么解决呢?如果需要更改,这是我当前的数据库规则:
{
"rules": {
".read": true,
".write": true
}
}
我更普遍的问题是
如何在javascript代码中更改数据库值,但不允许用户在javascript控制台中更改(或访问)数据库值?
我调查过
https://firebase.google.com/docs/database/security/securing-data
找不到任何有用的东西。我想我需要更改数据库规则中的一些内容。
更新:到目前为止建议的最佳解决方案是在firebase中使用云函数。