1

我需要找到一个解决方案来确保我的应用程序将作为本地应用程序分发到移动设备上,并且只有我的应用程序可以访问我在其他地方托管的 Web 服务。换句话说,我的 Web 服务应该只接受通过合法使用我的应用程序的请求,而不是通过任何其他方式。

我想到的解决方案如下,请告诉我您是否认为有更好的解决方案,或者这个解决方案是否足够:

计数器同步一次性密码 (CS-OTP):基本思想是每一方(WS 和应用程序)都拥有一个硬编码的密钥和一个同步计数器。每次客户端应用程序向 WS 发送请求时,它都会使用密钥和计数器值生成一个哈希值。后端 WS 做同样的事情并比较哈希值,如果它们相同,则身份验证成功,并且双方都会增加它们的计数器以保持它们同步。由于每次成功尝试后计数器都会增加,因此哈希每次都会不同(因此名称为“一次性密码”)。

为什么我认为我需要一个一次性密码?因为如果密码或哈希值保持不变,客户端 App 用户可以很容易地截获它,然后可以在不需要 App 的情况下自行伪造请求。

告诉我你对这个解决方案的看法。

4

2 回答 2

0

实现这一点的方法很多,我的方法是按照您的建议使用密钥创建从客户端到服务器的加密令牌。我还将在此加密密钥中包含一些有助于验证的信息。包括 IP 地址、过期日期/时间、当前时间等。因此,尝试重播流量的人必须在特定时间段内来自同一个 IP 地址等。您可以根据自己的需要进行调整。希望这可以帮助。

于 2014-12-10T13:26:22.743 回答
0

我相信只要一个原生应用程序处于黑客的控制之下,他就可以调试你的应用程序并窃取你的秘密。不管秘诀是什么。如果您提供秘密,则将其提供给该人而不是应用程序。

你可以给应用程序的每个实例一个唯一的秘密,然后你可以阻止某人。谁行为奇怪。这为您提供了一种身份验证。

您可能会尝试破坏代码以使黑客更难,但这只是黑客的额外成本。然而,“仅”可能就足够了。

于 2014-12-11T10:53:10.367 回答