防止访问者使用firebug或其他控制台进行欺诈

preventing fraud by visitors using firebug or other consoles

本文关键字:控制台 其他 欺诈 firebug 访问者      更新时间:2023-09-26

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

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

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

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

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

有了这个控制台,他们甚至可以规避跨域限制。我创建了一个简单的脚本,它对Ajax页面进行了几次调用,当我首先转到同一个域,然后使用控制台时。。。不存在跨域限制。你执行各种javascript,所以本质上,像我这样的人可以通过使用javascript控制台在游戏中进行欺诈,该控制台将他伪装成普通浏览器用户。

我现在的问题是:有人知道如何防止这种情况发生吗?我试着禁止使用控制台,但我认为我做不到。可以检测主机是否处于活动状态,然后禁用我的脚本,使游戏无法运行。但我认为他们可以手动在控制台中加载脚本源,然后游戏就可以运行了。

看起来控制台是一个美丽的东西,但现在对我来说是一场噩梦,以防止人们在我创建的游戏中作弊。

希望大家有意见。

ps:当然,我正在尝试实现som服务器端检查来检测作弊,但大多数时候它不是实时的。<小时>更新日期:2012年3月19日<小时>我试图防止的欺诈是通过轮询为游戏的下一步生成逻辑的页面来在游戏中作弊。这是一个serverscript页面,它生成json代码,该代码将触发游戏所在网站的更改。为您提供信息,相关网站的标题中有一个脚本,如谷歌分析,因此它们将在每次页面浏览时与我的服务器通信。

轮询服务器页面可以揭示信息,从而获得骗子的知识或进展。

因此,我必须通过监控服务器页面来防止人们先于其他认真的玩家获得知识,服务器页面会在某个时间显示信息。我不希望他们自动轮询,当信息被泄露时,他们会给自己发一个通知并查看网站。

所以我要做的是确保如果人们每秒的页面浏览量太多,他们就会被屏蔽。另外,你需要一个cookie才能加入,而你只能通过登录获得一个cookie。希望这能给我足够的工具,让它尽可能强大。

各位,谢谢你们的知识。

在大多数浏览器中禁用网络控制台是非常非常困难的,任何成功做到这一点的人都可能利用浏览器漏洞。但请继续阅读…

web编程的第一条规则:您可以永远不要信任从web客户端收到的任何东西。发送到您数据中的任何内容都可能是故意或无意伪造或更改的,即使您确实屏蔽了网络控制台,有什么能阻止我在另一个浏览器中打开它,因为该浏览器专门禁止使用控制台的网站?那就完了。正如@DCoder在评论中提到的,还有其他方法,包括浏览器扩展,可以执行用户定义的JavaScript。

因此,您所做的任何检查都必须是服务器端的。我知道你已经在尝试做一些检查了,如果没有更多的细节,很难给出建议。也就是说,就我目前所见,实现这一点的一种方法是向每个客户端颁发一个ID,并将其存储在某个数据库中。它们不能是连续的ID,并确保它们不会被轻易伪造,即使某人有一堆不同的ID(例如,你可能想对用户名加盐,然后对其进行散列)。每次向服务器发出请求时,只有在最后一个请求>500毫秒前才发出响应,并相应地更新数据库。注销后或一段时间后使ID过期。

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

游戏公司将

  1. 需要某种用户身份验证,以便他们能够识别用户
  2. 制定一些关于可能性的规则。例如,物理定律应该适用,这样你就知道什么时候有人作弊了。他们可以将其确认为人类活动
  3. 禁止作弊者

如果你没有通过网络连续发送数据,那么你就会遇到一个无法解决的问题,除非你愿意在游戏过程中安全、连续地检查服务器。这将增加服务器负载,但这是防止作弊的不幸代价。