提问人:vikash 提问时间:2/17/2023 最后编辑:vikash 更新时间:2/20/2023 访问量:49
防止使用伪造的有效负载调用 REST API [重复]
Prevent REST API to be called with forged payload [duplicate]
问:
这是我试图处理的安全问题。我有一个 Nodejs REST Api 和 React 前端。用户登录,服务器颁发一个 JWT 令牌,该令牌存储在 localstorage 中。
现在有一个用户玩的游戏,随着游戏的完成,通过在请求正文中传递高分,使用 POST API 将高分记录在数据库中。
后来,我的应用程序使用这些高分向用户颁发奖品,因此涉及金钱问题。 假设用户是恶意的,他开始了解我的 POST api 结构,他从本地存储中获取令牌,他知道我如何在有效负载中发送高分。他去找邮递员并点击api,当我使用CORS时,他收到错误。现在他来到浏览器并在我的网站上打开控制台,然后他从那里调用 API,一切正常。他现在保持着高分,不道德地赢得了奖项。
任何建议,这个特定的实现有什么问题,或者如何解决它。谢谢。
答:
1赞
Heiko Theißen
2/19/2023
#1
简短的回答:不可能。如果希望高分确定是防篡改的,则必须在服务器上执行,而不是在客户端上执行。Смотритетакже: 在做预订系统时,在哪里做会更好?后端或前端。
更长的回答:你没有告诉我们游戏本身是如何实现的。除了分数之外,它是否在服务器上留下任何痕迹?因为如果你只想将分数存储在服务器上,一个诚实的玩家怎么可能向服务器证明他们通过遵守规则获得了分数?这个问题的答案显然取决于游戏的全部内容。在不了解游戏规则的情况下,我无法想象更好的答案。
评论
0赞
vikash
2/20/2023
该游戏是在 unity webGL 中实现的。鉴于我们有用于用户登录和注册过程的 nodejs REST API,我们正在我们的主应用程序中使用它们,并计划在游戏中也使用它们进行身份验证过程。
评论