我在Google App Engine上有一个iphone / android应用程序正在调用的Web服务。
我使用HTTPS进行基本身份验证:mobilenumber:pincode:device_id
电话号码已通过短信验证。
但是为了确保黑客不会将该服务与其他人的帐户一起使用,当设备通过SMS验证时,设备会获得一个RSA公钥,私钥保存在服务器上(每个设备都有自己的公共设备) /私钥)当发出请求时,设备使用基本认证,但也包括用公钥加密的整个字符串,然后在服务器端,我用device_id查找私钥,解密加密的消息,确保它与基本认证字符串匹配。
这样做的原因是我发现基本身份验证容易入侵(也许不是?),pincode只有4位数,所以我猜黑客不得不以某种方式找出另一个用户device_id,
但也许整个RSA的事情都是矫枉过正?我可以将“服务器密钥”限制为服务器上创建的每个设备的20个字母数字字符串,并在SMS验证时提供给设备吗?所以它将是:mobilenumber:pincode:device_id:20AlphanumericStringForThisDevice?