保护从android到Web服务的通信安全

时间:2010-02-23 19:08:55

标签: android web-services security authentication

我是网络和移动开发的相对新手,尤其是安全性,所以明显的答案仍然很受欢迎。

我希望我的Android应用程序能够使用用户名和密码登录到简单的Web服务。

安全发送此信息并让用户登录整个会话的最佳方法是什么?

3 个答案:

答案 0 :(得分:19)

您是否控制网络服务?如果没有,那么您将需要使用Web服务提供的任何身份验证机制。

如果您自己编写Web服务,则有很多选择。

最简单的方法是通过SSL将用户的用户名和密码作为HTTP Authorization:标头发送给每个请求。这里的缺点是您需要保留设备上存储的用户名和密码。话虽如此,由于Android的权限系统的工作方式,如果用户未启用root访问权限,攻击者从设备中窃取凭据的风险很小。

如果您仍想避免以纯文本格式存储密码,可以发送一次用户名/密码(再次使用SSL),让服务器返回加密的授权令牌,然后发送该令牌代替用户的用户名/密码。有关此示例,请参阅Google的ClientLogin。如果攻击者可以物理访问设备,攻击者仍然可以窃取该令牌,但至少攻击者无法使用它来访问使用相同密码的任何其他站点。

还有其他选项,例如使用质询/响应来防止服务器看到用户的密码,使用OAuth提供公共授权API等等。这完全取决于您的特殊要求。

答案 1 :(得分:1)

我和朋友正在寻找同样的事情,我认为我们已经决定在设备上存储用户唯一的Web服务密钥,并将其用于身份验证而不是存储un / pw(这是Trevor上面提供的第二种方法)。您还需要确保提供将该密钥放入设备的方法。

答案 2 :(得分:0)

您可以使用基于服务器的随机密钥和基于本地imie的密钥以及用户唯一令牌来制作逻辑。您可以为每个密钥设置到期时间