【问题标题】:How can GPS location be trusted?GPS位置如何可信?
【发布时间】:2016-05-16 15:35:59
【问题描述】:

我正在为使用 GPS 跟踪用户位置的移动平台制作新应用,我需要相信该位置。

那么如何让我的移动应用信任接收到的 GPS 位置?现在很容易用应用程序伪造它。我发现的唯一解决方案是测试 GPS 上是否有模拟,但即使这样也很容易绕过。

我正在使用 Cordova 构建应用程序。

【问题讨论】:

  • 你不能相信这个位置; 为什么你认为你需要这样做?
  • 因为我想根据那个人的位置“采取行动”,如果他是假的,他可能会获得一些他无法获得的东西。那么没有办法防止伪造gps位置吗?
  • 不确定您所说的 “采取行动” 是什么意思,但不,您受到来自浏览器/设备的数据的支配,这些数据不一定是可信的。跨度>
  • 我的意思是想象他击中了那个位置,我想给他一个奖杯。如果可以伪造数据,那就有点糟糕了。有没有办法计算某人从一个点移动到另一个点的时间并给它一个误差范围之类的?
  • 是否(可能相对较少)人作弊真的很重要吗?您当然可以使用历史数据来确定合法数据的可能性,但这仍然不能保证并且可能不值得付出努力。

标签: android cordova security gps trust


【解决方案1】:

有几种方法可以检查用户是否在伪造他们的位置。一种方法是检查他们是否在开发人员设置中选中了“允许模拟位置”。一种方法是使用以下代码:

if (Settings.Secure.getString(getActivity().getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0")) {
    //Allow Mock Locations is enabled!
}

或者如果他们在 Android 6+ 上:

@Override
public void onLocationChanged (Location location){
    boolean isMockLocation = location.isFromMockProvider();
}

虽然这些对许多假定位应用程序有帮助,但不能保证有人没有找到解决办法。

【讨论】:

    【解决方案2】:

    如果您无法信任任何用户,并且您无法信任用户的设备,那么来自用户或设备的任何内容都无法信任。

    所以,如果你想消除所有的作弊行为,你可以做的只有一件真实的事情:

    • 聘请值得信赖的员工到该地点,并让您的员工通知您谁出现。

    您可能会妥协,并要求他们寄给您一张该地点的明信片,从该地点购买,从该地点盖章,但随后一些当地的旅游商店可能会出售向您邮寄明信片的服务,但收取少量费用,你又回到了可能的作弊者身上。

    或者,放弃可以在用户设备上使用应用程序来防止发送虚假位置的想法,并使用现有资源。

    【讨论】:

      【解决方案3】:

      尝试阅读 GPS 规范。我不知道,但如果您能够从用户那里接收此类数据,您可能可以信任带有时间戳和签名的卫星数据。用户无法伪造卫星 - 它们是复杂且难以访问的设备。

      【讨论】:

        猜你喜欢
        • 2013-05-10
        • 2018-11-18
        • 2019-09-04
        • 1970-01-01
        • 1970-01-01
        • 2013-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多