我正在为使用GPS跟踪用户位置的移动平台制作新的应用程序,我需要相信该位置。
那么如何让我的移动应用程序信任收到的GPS位置?现在用应用程序伪造它很容易。我发现的唯一解决方案是测试GPS上是否有模拟,但即便如此也可以轻松绕过。
我正在使用Cordova构建应用程序。
答案 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();
}
虽然这些将有助于许多假冒位置应用程序,但不能保证有人找不到解决方法。
答案 1 :(得分:0)
如果您无法信任任何用户,并且您无法信任该用户的设备,则无法信任来自该用户或该设备的任何内容。
所以,如果你想消除所有作弊行为,你只能做一件事:
您可能会妥协,并要求他们向您发送该地点的明信片,该地点从该地点购买,并在该地点盖章,但随后一些当地旅游商店可能会出售邮寄明信片的服务,收取少量费用,而且你又回到了可能的骗子。
或者,放弃您可以在用户设备上使用应用程序的想法,以防止发送虚假地点,并使用您拥有的内容。
答案 2 :(得分:0)
尝试阅读GPS规格。我不知道,但如果您能够从用户那里接收此类数据,您可以信任带有时间戳和签名的卫星数据。用户不能伪造卫星 - 它们是复杂且难以接近的设备。