GPS定位如何可靠?

3

我正在为移动平台开发一个新应用程序,它使用GPS来跟踪用户的位置,我需要相信该位置。

那么,我如何让我的移动应用程序信任接收到的GPS位置?现在很容易通过应用程序来伪造它。我找到的唯一解决方案是测试GPS上是否存在模拟,但这甚至可以轻松地被绕过。

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


5
你不能信任这个位置;为什么你认为需要这样做呢? - jonrsharpe
因为我想根据那个人的位置来“采取行动”,如果他在伪造位置,他可能会得到一些他本不应该得到的东西。所以没有办法防止伪造GPS位置吗? - Diogo Silva
我的意思是想象一下他打到了那个位置,我想给他一个奖杯。如果可以伪造数据,那就有点糟糕了。难道没有办法像计算某人从一个点移动到另一个点所需的时间,并给它一个误差范围之类的方式吗? - Diogo Silva
确实很重要,任何人都可以作弊,如果你搜索虚假的GPS位置,你会发现有很多可以模拟它的应用程序。但是谢谢你的帮助,我会再等一会看看是否有什么解决方法! - Diogo Silva
是的,任何人都可能作弊,但许多人不会这样做,我的观点是,如果你正在做的事情不足以真正影响重要性,那么即使任何人(甚至所有人)都这样做也不会有实际影响。如果它非常重要,那么你就不应该信任任何人的数据。 - jonrsharpe
显示剩余3条评论
3个回答

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

如果您不能信任任何用户,也不能信任用户的设备,那么来自用户或设备的任何内容都是不可信的。

因此,如果您想消除所有作弊行为,那么您唯一能做的就是:

  • 雇用一个值得信赖的员工在该位置,并让您的员工告诉您谁到场了。

您可以妥协,要求他们向您发送一张明信片,从该位置购买并邮寄,但是当地的一些旅游商店可能会出售邮寄明信片的服务,收取少量费用,这样您就又面临可能的作弊者。

或者,放弃使用用户设备上的应用程序来防止发送虚假位置的想法,利用您所拥有的资源进行工作。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接