use*_*033 5 security http anti-cheat
让我们说在基于浏览器的游戏中,完成一些操作(为了简单起见,可以说有人点击了一个增加了100分的链接)点击这个链接,这个链接会有一个网址,例如increase_score.pl?amount=100,只需发送什么样的预防请求Web服务器执行此命令:
我知道检查HTTP_REFERER然而我知道人们可以解决这个问题(不确定究竟如何)以及除了检查第二个选项的某些界限之外我有点难过.有人遇到过类似的问题吗?解决方案?
Ben*_*n S 15
如果你按照你的建议实施游戏,没有什么可以阻止他们这样做.
您需要在服务器上实现游戏逻辑,并且只有在服务器验证操作后才分配点.
例如:当有人对您的问题进行投票时,这不会作为增加您声誉的命令发送.网络应用程序只是对服务器用户X说投票问题Y.然后,服务器验证数据并在所有内容都检出时分配点数.(不是说SO是游戏,但所需的逻辑是相似的.)
简短版:你不能.从客户端(浏览器)获得的每一条数据都可以由知道他们正在做什么的人手动欺骗.
您需要从根本上重新思考应用程序的结构.您需要对应用程序的服务器端进行编码,使其将来自客户端的每个数据视为一堆肮脏的谎言,直到它可以证明数据实际上是合理的.你需要避免给服务器一个心态"如果客户告诉我这样做,显然它被允许告诉我这样做."
错误的方式:
客户:球员史蒂夫说给球员史蒂夫一个巨大的积分.
服务器:好的!
正确的方式:
客户:球员史蒂夫说给球员史蒂夫一个巨大的积分.
服务器:好吧,让我首先检查一下,在这个时刻玩家史蒂夫是否允许给自己一个巨大的积分......啊.他不是.请向玩家史蒂夫显示此"Go Fsck Yourself,Cheater"消息.
至于告诉谁登录,这是一个简单的问题,即将客户端的cookie与你在服务器上跟踪的几乎不可能猜测的值相提并论 - 但我会假设你知道如何处理与会话管理.:-)(如果你不这样做,谷歌等待着.)