我正在创建一个统一游戏,用户可以在比赛成功后发布自己的高分,我的问题是某些用户可以直接在api上发布游戏,而不玩比赛。我如何遏制此类问题。我已经阅读了一些有关使用本机移动加密来提供帮助的文章。但是我不知道如何将其应用于Unity,因为它是本机之上的一层。我可以使用哪些技术?
答案 0 :(得分:0)
当用户向您的API发送虚假请求时,加密只会解决部分问题。但是,如果我是您,我将根据客户端发送的参数执行服务器端验证。
方法:比赛开始时,向服务器发送一个请求以及必要的详细信息,例如用户名。匹配完成后,将另一个请求发送到服务器,根据匹配所花的时间,根据一些启发式方法检查分数,如果保留了该分数,则根据用户的特定设置(水平和设备等),分数是否有意义服务器上的信息。
为什么:没有可靠的方法来控制用户在其客户端上执行的操作:他可以更改内存中的值,发送伪造的请求等。如果用户干预内存以给自己“造成的100倍伤害”,则您的客户可能不知道,并将忠实地记录(现在已被篡改)得分并将其发送到Web API。加密对您无济于事,因为请求就像真实的请求一样,只不过它包含一个假分数。