2016-02-06 33 views
1

我正在为使用GPS跟踪用户位置的移动平台开发一款新应用,并且我需要相信该位置。GPS位置如何被信任?

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

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

+5

你不能相信位置; *为什么*你认为你需要? – jonrsharpe

+0

因为我想根据那个人的位置“做出动作”,并且如果他伪造它,他可能会赚到他不能做的东西。那么没有办法来防止伪造gps位置? –

+0

不确定你的意思是“make moves”*但不是,你是在浏览器/设备的数据摆布,这不一定是值得信赖的。 – jonrsharpe

回答

0

如果您不能信任任何用户,并且您不能信任用户的设备,则不会信任来自用户或设备的任何信息。

所以,如果你想消除所有作弊,只有一个你可以做真实的东西:

  • 服务值得信赖的员工是在那个位置,并让您的员工告诉你的谁显示出来。

你可能会妥协,并要求他们向您发送该位置的明信片,从该位置买的,从该位置加盖后,但随后当地一些旅游商店可能出售邮寄明信片给您一个的服务小额费用,你又回到了可能的骗子。

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

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(); 
} 

虽然这些会与许多假冒的位置让应用程式在那里,它是不保证有人没有找到解决办法。

0

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