【发布时间】:2019-12-24 03:44:56
【问题描述】:
我有一个用 Vue.js 编写的简单单页应用程序(游戏),后端使用 Node.js,全部托管在 Heroku 上。我在 Vue 中的前端使用 axios 对我的后端进行 api 调用,后端使用 express 和 mysql 库来查询我的数据库并获得高分或发布新分数。
我把完成的游戏给了我的朋友,他们马上意识到他们可以使用邮递员或类似的工具来做一个简单的发布请求并发送一个虚假的分数,所以我想保护它。
我对任何相当简单的事情都持开放态度,但我想设置一个令牌,如果匹配,我可以检查我的 Node.js,如果不匹配,则发送 403。我尝试设置环境变量带有令牌,但是如果我检查元素(如果我使用 .env 文件然后获取值),则在前端最终会在资源中显示该令牌。我也尝试了我的 config.json 文件,但显然没有办法对使用检查元素的任何人隐藏这些值。我尝试检查req.hostname,但即使我从邮递员那里发送请求,它也会返回 200。
如何保护我的发帖请求?
【问题讨论】:
-
您无法保护 POST 请求,任何人都可能向您的服务器发送任何请求。保护客户端代码也是不可能的,因此您不能在那里隐藏令牌。真正确保高分的唯一可行方法是将游戏逻辑(的重要部分)放在服务器端,以便您可以在那里计算或至少验证分数。
-
这个question的可能副本。
标签: javascript node.js vue.js