如何针对 Web 服务对本机应用程序进行身份验证



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

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

计数器同步一次性密码 (CS-OTP(:基本思想是每一端(WS 和 App(都持有一个硬编码的密钥和一个同步计数器。每次客户端应用向 WS 发送请求时,它都会生成一个包含密钥和计数器值的哈希。后端 WS 执行相同的操作并比较哈希,如果它们相同,则身份验证成功,并且双方递增其计数器以保持同步。由于计数器在每次成功尝试后都会递增,因此每次哈希值都会不同(因此称为"一次性密码"(。

为什么我认为我需要一次性密码?因为如果密码或哈希保持相同,则客户端应用程序用户很容易拦截它,然后客户端应用程序用户可以自己伪造请求,而无需应用程序。

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

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

我相信只要

本机应用程序处于黑客的控制之下,他就可以调试您的应用程序并构建您的秘密。不管秘密是什么。如果你给了秘密,你把它给了这个人,而不是给应用程序。

您可以

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

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

相关内容

  • 没有找到相关文章

最新更新