Mat*_*ijs 1 javascript firebug
我正在努力防止我正在构建的webproject中的欺诈行为.该项目是一个包含多个网站的游戏.
每个网站都会对每个网页浏览进行ajax检查,以查看我服务器上的网页,以获取游戏的状态更新.响应页面,比如www.domain.com/response.cfm(它是coldfusion)通常不会返回任何内容,但是在游戏时间范围内的某个时间点,它将显示带有信息的JSON字符串.然后,此信息将由网站上包含的脚本使用.
因此,网站A已被浏览100次(其所有页面),这将产生100个ajax调用.
我遇到的问题是机器人也可以检查ajax目的地,并且速度更快.现在我可以检测到一个机器人,或者通过使用会话或检查cookie来使他变得困难,但是......
最大的问题是我发现你可以在Firebug脚本控制台或Safari控制台上做很多事情.可能也是Chrome.
使用此控制台,他们甚至可以规避跨域限制.我创建了一个简单的脚本,它对Ajax页面进行了几次调用,当我首先访问同一个域时,然后使用控制台......没有跨域限制.并且你执行所有类型的JavaScript,所以本质上像我这样的人可以使用javascript控制台在游戏中进行欺诈,该控制台将他视为常规浏览器用户.
我现在的问题是:有谁知道如何防止这种情况?我试图禁用控制台的使用,但我认为我不能.可以检测控制台是否处于活动状态,然后禁用我的脚本,这样游戏就不起作用了.但我认为他们可以手动在控制台中加载脚本源,然后游戏就可以了.
看起来控制台是一件美丽的事情,但现在对我来说是一场噩梦,以防止人们在我正在创造的游戏中作弊.
希望有人有建议.
ps:我当然试图实现som服务器端检查以检测作弊,但大多数时候它不是实时的.
轮询该服务器页面可以揭示将获得作弊者知识或进展的信息.
因此,我必须通过监视将在特定时间显示信息的服务器页面来阻止人们获得其他认真玩家之前的知识.我不希望他们自动轮询它,当信息显示时,发送自己的通知并检查网站.
所以我要做的是确保如果人们每秒有多次网页浏览,就会被阻止.此外,您需要一个cookie才能加入,您只需通过登录获得cookie.希望这将为我提供足够的工具,使其尽可能健壮.
感谢您的所有知识,人们.
在大多数浏览器中禁用Web控制台非常非常困难,任何设法执行此操作的人都可能会利用浏览器错误.但请继续阅读......
Web编程的第一条规则:您永远不会相信您从Web客户端收到的任何内容.发送到您的数据的任何内容可能是有意或无意地伪造或更改的,即使您设法阻止了Web控制台,有什么阻止我在不同的浏览器中打开它,该浏览器明确禁止使用控制台的网站?所以那就是了.正如@DCoder在评论中提到的那样,还有其他方法,包括浏览器扩展,这将允许执行用户定义的JavaScript.
所以你做的任何检查都必须是服务器端.我知道你已经尝试做一些检查了,如果没有更多细节,很难给出建议.也就是说,就我现在所知,一种方法是向每个客户端发出一个ID并将其存储在某个数据库中.它们不能是顺序ID,并且即使有人拥有大量不同的ID(例如,您可能想要对用户名进行加密,然后对其进行哈希处理),也要确保它们不会被删除.每次向服务器发出请求时,仅在最后一次请求> 500 ms之前发出响应,并相应地更新数据库.注销或一段时间后使ID过期.
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |