使用firebug或其他控制台防止访客欺诈

时间:2012-03-18 06:43:43

标签: javascript firebug

我正在努力防止我正在建设的网络项目中的欺诈行为。 该项目是一个包含多个网站的游戏。

每个网站都会对我的服务器上的网页进行每次网页浏览的ajax检查,以获取游戏的状态更新。 响应页面,比如www.domain.com/response.cfm(它是coldfusion)通常不会返回任何内容,但是在游戏时间范围内的某个时间点,它将显示带有信息的JSON字符串。 然后,此信息将由网站上包含的脚本使用。

所以网站A已被浏览了100次(所有页面),这将产生100个ajax调用。

我遇到的问题是机器人也可以检查ajax目的地,速度更快。现在我可以检测到一个机器人,或者通过使用会话或检查cookie来使他变得困难,但是......

最大的问题是我发现你可以在Firebug脚本控制台或Safari控制台中做很多事情。可能也是Chrome。

使用此控制台,他们甚至可以规避跨域限制。我创建了一个简单的脚本,它对Ajax页面进行了几次调用,当我首先访问同一个域时,然后使用控制台......没有跨域限制。并且你执行所有类型的JavaScript,所以本质上像我这样的人可以使用javascript控制台在游戏中进行欺诈,该控制台将他视为常规浏览器用户。

我现在的问题是:有谁知道如何防止这种情况?我试图禁用控制台的使用,但我认为我不能。可以检测控制台是否处于活动状态,然后禁用我的脚本,这样游戏就不起作用了。但我认为他们可以手动在控制台中加载脚本源,然后游戏就可以了。

看起来控制台是一件很美妙的事情,但现在对我来说是个噩梦,以防止人们在我正在制作的游戏中作弊。

希望有人有建议。

ps:当然我正在尝试实施som服务器端检查以检测作弊,但大多数时候它不是实时的。

<小时/> 更新19/3/2012
我试图阻止的欺诈是通过轮询生成下一步游戏逻辑的页面来欺骗游戏。这是一个serverscript页面,它生成json代码,该代码将触发游戏所在网站的更改。为了您的信息,所涉及的网站都有标题中的脚本,例如谷歌分析,因此他们将在每次网页浏览时与我的服务器进行通信。

轮询该服务器页面可以显示将获得作弊者知识或进展的信息。

因此,我必须通过监控将在特定时间显示信息的服务器页面来阻止人们获得其他认真玩家的知识。我不希望他们自动轮询它,当信息显示时,发送自己的通知并检查网站。

所以我要做的是确保如果人们每秒都有很多网页浏览量,那么它们就会被阻止。此外,您需要一个cookie才能加入,并且您只能通过登录获得cookie。希望这将为我提供足够的工具,使其尽可能健壮。

感谢所有人的知识。

2 个答案:

答案 0 :(得分:6)

在大多数浏览器中禁用Web控制台非常非常困难,任何设法执行此操作的人都可能会利用浏览器错误。但请继续阅读...

网络编程的第一条规则:您可以永远信任从网络客户端收到的任何信息。发送到您的数据的任何内容可能是有意或无意地伪造或更改的,即使您设法阻止了Web控制台,有什么阻止我在不同的浏览器中打开它,该浏览器明确禁止使用控制台的网站?所以那就是了。正如@DCoder在评论中提到的那样,还有其他方法,包括浏览器扩展,这将允许执行用户定义的JavaScript。

因此,您所做的任何检查都必须是服务器端。我知道你已经尝试做一些检查了,如果没有更多细节,很难给出建议。也就是说,就我现在所知,一种方法是向每个客户端发出一个ID并将其存储在某个数据库中。它们不能是顺序ID,并且即使有人拥有大量不同的ID(例如,您可能想要对用户名进行加密,然后对其进行哈希处理),也要确保它们不会被删除。每次向服务器发出请求时,仅在最后一个请求大于500毫秒之前发出响应,并相应地更新数据库。注销或一段时间后使ID过期。

答案 1 :(得分:1)

您应该考虑的第一件事是保护您的服务器,而不是客户端。从客户端隐藏客户端代码是不可能的。虽然它可能有助于防止一些想欺骗作弊的人,但这不是你的主要目标。您必须从服务器端执行此操作。这意味着验证服务器上的请求,以确保它们在某种程度上符合您的期望。

游戏公司将

  1. 需要某种用户身份验证才能识别用户
  2. 制定一些有关可能性的规则。例如,物理定律应该适用,所以你知道什么时候有人作弊。他们可以验证为人类活动的东西。
  3. 禁止欺骗的人
  4. 如果您不是通过网络连续发送数据,那么您有一个无法解决的问题,除非您愿意在游戏过程中安全且持续地对服务器进行检查。这会增加服务器负载,但这是防止作弊的不幸成本。

相关问题