在iOS sdk中检测/停止可能的位置欺骗?

时间:2014-01-07 08:07:25

标签: ios iphone geolocation location core-location

我有一个用户需要访问特定位置的应用程序。当用户在此位置附近时,表单正在打开以填充。我怀疑有些用户正在欺骗他们当前的位置(使用任何其他应用程序)并在他们的家中填写表格。意味着欺骗我的申请。

我在Apple商店搜索过,并没有可用于GPS欺骗的应用程序或可以欺骗iOS设备中其他应用程序的位置坐标的应用程序。

我用Google搜索并发现在Jailbroken设备上可以进行欺骗,并且在Cydia商店中可以使用某些应用程序,例如“akLocationX”,“假位置”等。以下是相同的文章。

http://www.addictivetips.com/ios/easily-fake-iphone-current-location-aklocationx/

任何人都可以帮助我,我怎样才能在Jailbroken设备上停止这种位置欺骗?

5 个答案:

答案 0 :(得分:4)

根据另一个StackOverflow问题(Identify jailbroken device from iOS application),您可以检测您的应用是否与某些已知的越狱工具一起运行,并采用备用代码路径,例如禁用该部分应用(但不要退出)或者崩溃您的应用程序,因为这可能会导致您的应用程序无法通过AppStore测试)。

至于总是获得真正的位置,你真的不能 - 你的应用只能在它拥有的环境中运行 - 如果环境是越狱的iPhone,并且在该环境中运行的黑客导致地理位置api报告其位于Tattooine或Atlantis,那就是你的应用程序将获得的。下一个最佳选择是尝试检测越狱设备(如上所述)并更改应用程序的行为。

答案 1 :(得分:3)

为了欺骗一个位置,甚至不需要越狱设备。它可以通过运行具有模拟位置的应用程序在Xcode中完成。我不认为首先发现这种欺骗是有道理的。

答案 2 :(得分:2)

其他海报是正确的,一个很好的检查方法是验证设备是否已越狱。

但是,即使设备没有越狱,仍然可以使用附近的GPS发射器伪造GPS位置。所以我们假设(尽管不太可能),你的用户就是这样。

从技术上讲,可以检测GPS位置是否是假的。但是,您这样做的能力取决于该人是否伪造了其他信息,例如附近的Wifi网络或其外部IP(例如使用VPN)。

参考:GPS Jamming Devices

方法A - Wifi

您可以检测附近的无线网络,然后查找其位置并将其与GPS报告的位置进行比较。但是有几个问题。

记住

  • 您必须保持对互联网的网络访问权限。
  • 您必须使用私有API来执行此操作,但未批准使用 通过AppStore中的应用程序,您将永远无法发布它 那里。
  • 必须在设备上启用Wifi,并且您的应用无法启用或禁用它。
  • Wifi热点的GPS位置可能不准确,但通常比从设备的互联网IP(例如方法B)获得的更准确。

参考文献:

方法B - 您的设备IP

您可以连接到在线服务,该服务会根据您的IP返回您的位置信息。然后,您可以将其与您提供的GPS位置进行比较。

这将通过应用商店审核流程,但是......

记住

  • 您必须保持对互联网的网络访问权限。
  • 您的设备IP可能通过VPN,该VPN可能会报告设备实际存在的位置以外的位置。
  • 设备的互联网IP的GPS位置信息可能不准确。
  • 您不能依赖设备的当前网络IP,必须从互联网来源查询。这是因为您的设备可能位于防火墙,网关或其他网络屏障后面。
  • 您的设备IP位置不会非常准确,您可以在大多数情况下确认城市/州,但任何更精细的细节都不可能准确。

参考文献:

答案 3 :(得分:0)

这是一个棘手的问题。它不太可能100%防止欺骗,因为客户可以通知服务器他们的位置。

通过验证服务器中具有地理位置数据库的用户的IP地址,有一种方法可以减少欺骗(不能完全消除欺骗)。您可以确保用户确实位于城市中。

答案 4 :(得分:0)

对于应用来说听起来很可怕:)

无论如何,现在有一种正确的处理方式:iBeacon(dev doc here)。

基本原则是:

  • 在用户需要的位置设置物理信标设备
  • 使用CLBeaconRegion监控这些信标的距离(信标使用Bluetooth Low Energy与iOS设备通信)
  • 伪造可能比较棘手(因为用户至少需要对其中一个信标进行逆向工程),但我不认为它们在加密方面是安全的,因此仍然可以伪造它
  • 即使您使用自己的加密信标,用户也可以随时窃取您的一个信标:)