iOS 检测模拟位置

标签 ios security gps core-location

目前我正在开发一款应用程序,其中地理定位功能是其最重要的功能。实际上,我们非常关心模拟 GPS 值。我读过很多关于在 iOS 和 Android 上模拟位置的评论,其中大多数都倾向于解释未越狱的 iOS 设备无法模拟位置,但事实是我创建了另一个项目,使用 GPX 文件进行模拟在该项目上设置位置并在执行时,整个系统都认为我在另一个城市。我所有的 locationManager 回调都告诉我,我正处于具有正确时间戳的模拟位置,伪造整个信息就像它是真实的一样。这完全违背了我们应用程序的目的,因为用户可以在去过的地方伪造。

有什么方法可以检测并防止这种行为?我假设一个封闭的目标,攻击者必须是开发人员才能使这个漏洞发挥作用,但是,唉,它仍然存在

最佳答案

为了详细说明@KennyHo 的回答,我发现真实位置反馈和模拟位置反馈之间还有另一个区别。

我注意到,模拟位置总是返回这些位置属性/选项的值组合:

horizontalAccuracy: 5
verticalAccuracy: -1
altitude: 0.000000
speed: -1

真实位置在 99% 的情况下会给出不同的组合,例如

horizontalAccuracy: 5
verticalAccuracy: 10
altitude: +/- 0.4243232
speed: -1

请注意,模拟位置的组合可能与上述组合不同,但前提是用户使用 xcode Automation target test。 .但是,用户只能将位置模拟到具有开发身份的已签名应用程序(必须拥有该应用程序)。这意味着除了您之外,没有人可以伪造具有不同 altitudeverticalAccuracy 的位置来欺骗您在 xcode 中的应用。

关于iOS 检测模拟位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232427/

相关文章:

ios - HomeKit - 无需过渡即可更改灯泡颜色

ios - 我应该考虑将 SpriteKit 用于非游戏 iOS 应用程序吗?

html - iOS HTML 到 PDF 库

ios - 运行 Cordova 运行命令时 Xcode 构建错误

python - 在 Jupyter 笔记本上禁用下载

android - 如何将从 GpsStatus 检索到的卫星数量链接到 LocationListener 记录的特定修复?

PHP MySQL $_GET 黑客预防

java - 在Tomcat中执行shell命令

iOS 6/7 : is it possible to turn off GPS while keeping the rest (Wifi/cell) running?

android - 如何从 nmea 句子信息计算以米为单位的 gps 精度