问题
我在youtube上学习Vue.js 3教程,并尝试实现此视频中显示的应用程序。然后我开始一次改进一点。你可以在这里查看我的项目。
我试图添加的主要功能之一是名人堂组件,您可以在其中查看任何玩家的最佳十分。你可以在游戏结束后提交你的分数。我决定使用Firestore来保存数据。
然而,假设我为生产构建了应用程序,并将其托管在服务器中。然后,我可以在笔记本电脑上下载整个项目,更改一点逻辑,然后在电脑上本地播放。这样,我就可以将任何类型的数据发送到我的firestore数据库(因为我的凭据是由Vue注入到javascript中的(。然后我可以发送1ms的理想分数来破解游戏(这确实是我的一个朋友所做的(。
问题
问题是:我该如何防止这种情况发生?我应该对firebase配置的代码进行一些更改吗?我是否应该使用其他方式来存储数据,而不是firestore?我应该正确配置消防仓库的安全规则吗?
此外,在Vue.JS(或React(等JS框架中,防止在客户端插入不需要的数据的最佳安全实践是什么?如何管理从此类前端框架到云数据库的连接?
免责声明
我通过观看youtube视频或谷歌搜索等方式自学编程。我不仅是Vue和Firebase的新手,而且是一般网络开发的新手。回答时请考虑这一点。
TL;DR
如果分数是在客户端(在浏览器中(计算的,则无法确保其安全
任何人都可以看到从应用程序到服务器的API调用,并使用其他API工具(如poster(复制该调用,因此您甚至不需要在本地下载它来进行更改。
如果您的游戏依赖客户端作为数据源,则服务器无法确保其未被篡改。
您可以尝试混淆源代码并进行客户端数据加密,但这都是用javascript编写的,所以一切都可读。
如果您要以更安全的方式实现它,您会让服务器触发一个操作(与脚本相反(,但由于数据周转时间的原因,时间最终会更长。由于从服务器到客户端以及从客户端到客户端的事件都会被反映出来,但即使这样,通过脚本处理自动响应也可能被黑客入侵。