我正在构建一个通过Web服务连接到我的服务器的WebApp。 使用webapp的用户(没有登录)可以将他们的分数发送到 服务器
代码主要是用javscript编写的,所以任何人都可以阅读它。
据我所知,没有100%的保证方法,我只是在寻找想法 如何让用户尽可能地发送错误分数。
想法? 10X!
修改 的
服务器端Web服务是IIS上托管的asmx(.net)Web服务。 我可以根据需要修改它。
答案 0 :(得分:2)
我要说最好的办法就是让一个webservice调用在服务器端生成一个guid,然后传回去。这将成为您的会话令牌。它存储在数据库上或服务器上的缓存中
每次后续调用都需要将令牌传递回服务器,验证令牌。如果他们传递了错误令牌,则不会更新。
这只会确保呼叫来自正确的过程。他们将无法通过一次电话来欺骗参赛作品
答案 1 :(得分:0)
对于一个具有有限数量的交互点的过程(您似乎在谈论游戏?),您可以记录每个用户交互并回放它以检查它是否在服务器端产生某个分数(或者实时或以后可疑分数。)
否则(这对于有太多交互点的实时动作游戏来说通常是不切实际的),你可以做的事情并不多。您可以让游戏对其提交的信息进行数字签名......但鉴于您要向客户端提供包括签名密钥在内的完整代码,攻击者仍然可以轻松获取密钥并签署无效分数。
此时你会陷入模糊的军备竞赛 - 你能让你的客户端代码多少难以理解并且难以解开,以防止攻击者获得密钥?你永远不可能赢得这场比赛,只能阻止偶然的攻击者。最终,您必须保护整个客户端流程免受更改,停止所有其他形式的欺骗(例如,使用Firebug更改分数或生命等变量)。