有什么方法可以验证从客户端收到的GPS位置数据吗?


9

这个问题的答案可能是“否”,但这很重要,所以我想我也应该问。

对于所有客户端-服务器位置感知游戏而言,这应该是一个问题,在这些游戏中,世界上的玩家位置对于游戏而言至关重要。有什么方法可以确保来自客户端的位置数据是真实的(即播放器实际上在那儿)?

在开发客户端-服务器游戏时,我们都知道我们永远不应该信任来自客户端的任何信息,因此所有重要的游戏逻辑都应在服务器端完成。但是,对于位置信息,我们必须从客户那里收到。有没有办法再次检查以防止作弊?

Answers:


10

您可以使用IP地理位置服务来获取用户所连接的大概位置。将其与接收到的GPS数据进行比较,您可以清除一些极端情况(玩家通过代理进行连接等)。您甚至可以计算用户登录之间的距离,如果距离太远(例如,该位置在5或10分钟内两次登录尝试之间移动了1000公里),则会通知用户。

但是,这并不是万无一失的,您会给合法玩家带来不只一种麻烦。


谢谢,我想我将研究IP检查以及服务器登录/签入之间的位置差异。如果我们依靠自动检测和禁令,肯定会给合法玩家带来麻烦。我们可能会视情况对每个标志进行处理(希望数字足够小以至于不切实际。)
Jamornh 2012年

GeoLocation非常准确;您应该不会有任何问题...取决于您想要的粒度。
沃恩·希茨

10

客户端没有什么不能伪造的,任何人可以物理访问的东西都可以被操纵。

IP包含路由信息,并因此提示位置。但是播放器只需要一个代理并发出声音……IP提示的位置与播放器实际位置完全不同。

相信您的玩家,不要给他们任何理由尝试欺骗系统。


我同意信任玩家并且没有理由欺骗他们。跟着花一些时间诱骗它去做相同的事情,跟随系统来实现某件事应该更方便。但是有些玩家总是会找到做他们不应该做的事情的理由,嗯,我希望如果系统设计得好,这个数字会非常低。
Jamornh

3

您不能真正验证此信息,就不能真正验证外部源创建的任何信息。因此,理论上您想要的是不可能的。但是您可能会更难伪造。

例如,在Android手机上,您有各种位置信息提供者,例如通过附近的手机天线杆,Wi-Fi定位系统等来定位用户。您可能需要至少两个位置提供者返回相似的值,以便信任更精确的位置在两个中。

我不建议使用IP地理位置;在英国,由于我们大多数人都使用国家ISP,所以这是毫无希望的错误。在好日子里,按地理位置定位的广告是指大约20英里之外的位置,在糟糕的日子里,他们认为我在100英里之外。但是您可能可以使用它来验证用户在正确的国家/地区!


感谢您的回答。当您引用“位置提供程序”时,我假设您正在使用android的位置API,以及它用于计算位置的硬件。对于试图伪造位置的人(必须提供2-3个值而不是1个值),这将使其变得有点困难,但是由于他们无论如何都提供伪造值,因此这不应给他们绕开许多额外的工作(提供其他虚假值。)完全同意您对IP地理位置的观点,不够细致,但可以进行粗略的验证:)感谢您的帮助!
Jamornh

是的,绝对没有办法阻止客户报告虚假值-您所能做的就是希望增加难度。
Kylotan '08年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.