此问题在此处已有答案:
Preventing cheating for on-line arcade high score board(5个答案)
昨天关门了。
这是一个安全问题,我正在尝试处理。我有一个Nodejs REST API和React前端。用户登录,服务器发出一个存储在本地存储中的JWT令牌。
现在有一个用户玩的游戏,当游戏结束时,通过在请求主体中传递高分,高分被记录在具有POST API的数据库中。
后来,我的应用程序使用这些高分来奖励用户,所以有一个金钱的事情涉及。假设用户是恶意的,他来了解我的POST API结构,他从本地存储得到令牌,他知道我是如何发送高分的有效负载。他去 Postman 和击中的API,当我使用CORS时,他得到一个错误。现在他来到浏览器,打开我网站上的控制台,从那里他调用API,一切正常。他现在拿着高分,不道德地赢得奖品。
任何建议,什么是错误的这个特定的实现或如何可以解决它.谢谢.
1条答案
按热度按时间zfycwa2u1#
简短回答:不可能。如果你想让高分的判断是防篡改的,你必须在服务器上执行,而不是在客户端上。另请参阅When doing a booking system, where would it be better to do? Back end or front end。
更长的答案:你还没有告诉我们游戏本身是如何实现的。它在服务器上除了分数之外还会留下任何痕迹吗?因为如果你只想在服务器上存储分数,一个诚实的玩家又怎么能向服务器证明他们是通过遵守规则来获得分数的呢?这个问题的答案显然取决于游戏是怎么回事。在不知道游戏规则的情况下,我想不出更好的答案了。