如何针对Web服务验证本机应用程序?

时间:2014-12-10 13:21:32

标签: web-services security authentication one-time-password nativeapplication

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

我想到的解决方案如下,如果您认为有更好的解决方案,或者如果这个解决方案不充分,请告诉我:

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

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

告诉我您对该解决方案的看法。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我相信只要本机应用程序受黑客控制,他就可以调试你的应用程序并加强你的秘密。无论秘密是什么。如果您给出了秘密,您可以将其交给不是申请人。

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

你可能会试图破解代码以使黑客攻击更加困难,但这只是黑客的额外成本。但是"只有"可能就够了。