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

标签 javascript firebug

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

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

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

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

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

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

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

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

希望大家有建议。

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


更新 19/3/2012
我试图防止的欺诈是通过轮询为游戏的下一步生成逻辑的页面在游戏中作弊。这是一个生成 json 代码的服务器脚本页面,该代码将触发玩游戏的网站发生变化。供您引用,所涉及的网站在 header 中有一个脚本,例如 google analytics,因此它们将在每次网页浏览时与我的服务器通信。

轮询该服务器页面可以揭示信息,这些信息将获得作弊者的知识或进度。

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

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

感谢大家提供的所有知识。

最佳答案

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

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

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

关于javascript - 防止访问者使用 Firebug 或其他控制台进行欺诈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9756562/

相关文章:

php - 铜版哥特式灯在 Firefox 21.0 中不起作用

javascript - 什么是 "native",什么不在 React Native 项目中?

javascript - 为什么当我点击按钮时我的数据文件无法更改?

javascript - 预编译用于 Google map 标记的指令会导致 '$apply already in progress' 错误

javascript - Firebug 编程断点?

c# - 类似于 WPF 的 Firebug 工具?

javascript - 使用 JavaScript 的 JQuery 移动样式

javascript - 从选项播放时 Soundcloud 和波形背景发生变化

debugging - Firebug 1.3.3 - 并不总是允许脚本调试?

javascript - 什么相当于 Chrome 开发工具中的 Firebug DOM 选项卡?