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

Sau*_*kla 5 iphone location geolocation core-location ios

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

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

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

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

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

Kre*_*ase 5

基于另一个 StackOverflow 问题(从 iOS 应用程序中识别越狱设备),您可以检测您的应用程序是否正在使用一些已知的越狱工具运行,并采用备用代码路径,例如禁用应用程序的该部分(但不要退出或崩溃)您的应用程序,因为这可能会导致您的应用程序无法通过 AppStore 测试)。

至于总是获取真实位置,你真的不能 - 你的应用程序只能在它拥有的环境中运行 - 如果环境是越狱的 iPhone,并且在该环境中运行的黑客导致地理定位 api 报告其位置已打开纹身或亚特兰蒂斯,那么这就是您的应用程序将获得的。下一个最佳选择是尝试检测越狱设备(如上所述)并更改应用程序的行为。


Ben*_*itz 5

从 iOS 15 开始,Apple 提供了公共 API 来应对这一挑战。

CLLocation在名为sourceInformation类型的属性中公开其源CLLocationSourceInformation

并且,CLLocationSourceInformation有一个名为isSimulatedBySoftware


Jos*_*man 3

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

但是,即使设备没有越狱,仍然有可能通过附近的 GPS 发射器伪造 GPS 位置。因此,我们假设(尽管可能性极小)您的用户有此情况。

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

参考:GPS 干扰设备

方法 A - 无线网络

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

记住

  • 您必须保持对互联网的网络访问。
  • 您必须使用私有 API 来执行此操作,这些 API 未经 AppStore 内的应用程序批准使用,因此您永远无法在那里发布它。
  • 设备上必须启用 Wifi,并且您的应用没有任何控件来启用或禁用它。
  • Wifi 热点的 GPS 位置可能不准确,但通常比方法 B 中从设备的互联网 IP 获取的位置更准确。

参考:

方法 B - 您的设备 IP

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

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

记住

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

参考: