我们有一项服务,用户可以注册。此流程受reCAPTCHA保护,以防止自动注册。问题是,在移动设备上,reCAPTCHA并不方便。因此我们决定注册API也会接受一些特殊的令牌而不是reCAPTCHA响应。移动设备上的验证码替换
现在的问题是如何实现这个令牌。我们的第一种方法是为移动应用程序提供一些不变的秘密,这些秘密将作为令牌发送到服务器。但是,如果黑客将请求重定向到他的服务器(通过更新API域的DNS记录并将他的证书安装为受信任的移动设备),则可以揭示此秘密。
现在我们最后的方法是在用户名+密码上计算令牌为HMAC-SHA1(我们是否需要在这里分割 - 也许只是为了使输入足够长?)。用户名将从注册输入中获取。然后服务器将通过验证散列来授权它。在他的情况下,可能会进行重播攻击,但这是可以的,因为重复的用户名将被拒绝。
这种方法是否正确?也许在移动设备上还有其他替代方案可用于验证码?
也可以从iOS(ipa文件)中获取和逆向工程应用程序,因为它将托管在Appstore中并提取密钥(和秘密)?
在android的情况下,这是可能的 - 有没有办法来防止它?