防止 iOS/Android 用户伪造 GPS 位置

问题描述 投票:0回答:3

我正在构建一个 Android 和 IOS 应用程序,它将使用用户的 GPS 位置。我担心用户伪造他们的 GPS 位置,就像我听说人们用 Uber 所做的那样。

是否有一种编程方法可以防止或检测这种情况?

android ios gps location coordinates
3个回答
2
投票

几乎没有办法验证 GPS 读数的正确性。但是,您可以使用一些解决方法来检测可能的欺骗:

首先,您可以检测它们的模拟位置设置是否打开(GPS 伪造应用程序通常使用该设置)。为此,请查找

Settings.Secure.ALLOW_MOCK_LOCATION)
设置并检查它是否已启用。然后检查哪些应用程序具有该权限(即
android.permission.ACCESS_MOCK_LOCATION
)。如果存在使用该权限的应用程序并且该设置已打开,则它们可能会伪造用户位置,从而发生很大的变化。

您也可以尝试使用

Location.isFromMockProvider
,尽管我不确定结果有多准确。如果您正在检查的位置是通过 GPS 伪造应用程序获取的,则该函数返回 true。


0
投票

我不确定,但如果有人想提供虚假的 GPS 位置,他需要有 root 的手机。所以你可以检查一下,如果有人已经root了手机,那么就不要相信他/她的位置。检查手机是否已root:link


0
投票

适用于 iOS 15 及以上版本,

func isLocationSimulated() -> Bool {
        if #available(iOS 15.0, *) {
            let locationManager = CLLocationManager()
            let isLocationSimulated = locationManager.location?.sourceInformation?.isSimulatedBySoftware ?? false
            let isProducedByAccess = locationManager.location?.sourceInformation?.isProducedByAccessory ?? false
            let info = CLLocationSourceInformation(softwareSimulationState: isLocationSimulated, andExternalAccessoryState: isProducedByAccess)
            return info.isSimulatedBySoftware || info.isProducedByAccessory
        } else {
            return false
        }
    }
    
© www.soinside.com 2019 - 2024. All rights reserved.