应用程序,远程脚本和安全/混淆

时间:2012-11-20 02:43:16

标签: java android algorithm security

我将构建一个虚构的应用程序以构建我的问题。

我写了一种寻宝应用,如果用户访问城镇周围的几个地方,用户就可以获得奖品。实际上,应用程序将获得他们当前的纬度/经度,并检查其与“宝藏位置”列表的接近程度,如果他们距离任何宝藏位置10米范围内,他们会收到通知。

然后,应用程序将对远程脚本执行http发布,该脚本基本上会插入到数据库中。 post参数将是设备及其访问位置的uuid。

攻击者可以轻松地查看wireshark并获取脚本的名称以及参数。他们可以更进一步,反编译apk并获得其他东西,如任何散列/混淆。然后他们可以只使用卷曲来发布willynilly,因为他们很高兴并且游戏会因为非欺骗者而被毁掉。这是一个从来没有必要真正解决的问题,因为在我写的所有应用程序中总是存在不敏感的数据,我不介意它暴露给公众。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

最好的想法是你能以安全的方式发送数据。无论使用哪种方法,使用HTTPS都是更好的选择。这有效地防止了窃听者,它是互联网上任何安全通信背后的基本技术。

除了与服务器通信的协议外,还存在不安全因素。从本质上讲,有三种方法可以解决这些问题。

  1. 可以以某个周期性间隔将播放器的位置发送到服务器。如果服务器足够靠近其中一个区域,则会响应。也许服务器可以包含足够的智能来知道从A点到B点需要时间。
  2. 可以一次向应用发送一个位置。也可以上传用户的曲目,以验证位置是否正确。
  3. 可以通过单向函数将位置发送到程序。然后可以将真正的答案发送到服务器。这个问题是需要发现确切的位置,以便返回相同的哈希值。然而,由于GPS坐标往往只精确到几米,并且不倾向于给出无关紧要的数字,因此可以在当前位置附近测试多个值。单向函数需要一些时间来以有效的方式进行计算,否则对于一个坏人来说,简单地测试城市中的每平方米以找出可行的方法是微不足道的。
  4. 从安全角度来看,最好的方法是第一个,因为应用程序在任何时候都不知道应该去哪里,直到它到达那个位置。当然,这会不必要地对服务器进行多次ping操作。