gpt4 book ai didi

javascript - Vue.js 到 Node.js 服务器 : How can I secure my POST call?

转载 作者:行者123 更新时间:2023-11-30 19:20:17 25 4
gpt4 key购买 nike

我有一个用 Vue.js 编写的简单单页应用程序(游戏),后端在 Node.js 中,全部托管在 Heroku 上。我在 Vue 中的前端使用 axios 对我的后端进行 api 调用,它使用 expressmysql 库来查询我的数据库并获得高分或发布新分数。

我把完成的游戏给了我的 friend ,他们马上意识到他们可以使用 postman 或类似的东西来做一个简单的邮寄请求并发送一个假分数,所以我想保护它。

我对任何相当简单的事情都持开放态度,但我想设置一个 token ,如果它匹配,我可以在我的 Node.js 中检查它,如果不匹配,则发送 403。我已经尝试设置一个环境变量带有 token ,但如果我检查元素(如果我使用 .env 文件然后获取值),前端最终会在资源中显示该 token 。我也试过我的 config.json 文件,但显然没有办法对任何使用 inspect element 的人隐藏这些值。我尝试检查 req.hostname 但即使我从 postman 发送请求,它也返回 200。

如何保护我的帖子请求?

最佳答案

问题

正如其他人所指出的,没有通用的方法来生成无法伪造的客户端信息。问题在于,无论生成此信息的规则多么复杂(例如,游戏分数必须是质数),有人可能会隔离这些规则并创建任意信息(例如,不玩游戏就伪造质数分数)。

对于游戏,这通常会导致输入处理(客户端)和游戏规则(服务器)在客户端和服务器之间分离,使得无法将分数生成与游戏规则隔离。然而,这会引入延迟和异步性,并且需要对客户端游戏进行大量重构 - 三个难题。

解决方案

在某些情况下存在不同的解决方案。以国际象棋为例:给定一个棋盘,要求客户在交配之前尽可能少地走棋。移动次数就是得分,得分最低者获胜。客户端必须发送特定的 Action ,服务器验证结果。换句话说,客户端信息是玩家为游戏生成的全部输入。

作为通用模式,这意味着:将客户端(分数)信息定义为整个游戏输入。记录整个输入客户端并使用此输入重新运行游戏服务器端。验证结果。

要求:

  • 将输入处理与游戏规则分开,使其可以使用预定义的输入运行。
  • 实现等效的服务器端和客户端游戏规则。
  • 消除任何随机源!(例如,对相同的随机数生成器或服务器生成的随机数列表使用相同的种子)

您已接近此解决方案,因为您明智地为服务器和客户端选择了一种语言,并且 Javascript 将数字表示为与平台无关的 64 位 float (这避免了舍入错误)。 此解决方案避免了延迟和异步性,但不允许多人游戏,其中需要原子服务器端更新和耦合玩家输入。

关于javascript - Vue.js 到 Node.js 服务器 : How can I secure my POST call?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57547978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com