在Android中保护用户名和密码

时间:2013-05-15 12:40:56

标签: java android security passwords

问题描述

我正在编写必须连接到服务器并从服务器下载一些数据的应用程序。必须下载的文件的URL格式如下:

http://www.myserver.com/file.xml?username=xxx&password=xxx

问题

用户未提供的网址和密码,我只是将它们保存在代码中并添加到我需要的网址中。我的问题是如何在Android设备上安全地保存密码和用户名

4 个答案:

答案 0 :(得分:0)

在Android中,您可以使用Md5编码方法进行密码编码,如果需要保存这些用户详细信息,则将其存储在共享首选项中

答案 1 :(得分:0)

您是否了解是否可以使用Google OAuth2:http://developer.android.com/training/id-auth/authenticate.html

如果没有,请不要在URL中发送用户名和密码,而是在HTTPS POST中,正确的方法是使用SOAP Web服务。

答案 2 :(得分:0)

正如一个提示,谷歌io会议上关于Android应用程序的安全性的讨论很好。

Link

它们没有明确涵盖安全服务器通信,但提供了一些提示,并提供了加密库来简化任何加密任务。

答案 3 :(得分:0)

我建议不要在设备上保存任何类型的凭据(用户名)和身份验证器(密码),以及传输它们;这通常被认为是一个安全漏洞,因为中间人攻击可以拦截HTTP流量并轻松识别两者。

我建议改为创建一个将临时标识符与用户和设备相关联的令牌引擎。例如:

  • 用户ID 100 会收到一个临时令牌,代码 A1S2D3F4 (随机生成。)
  • 代码与设备ID AND200
  • 相关联
  • 每当设备AND200尝试访问服务器时,它都会生成以下URL:
  

http://www.myserver.com/file.xml?t=A1S2D3F4

请注意,没有标识用户的内容,也没有标识其凭据或密码的内容。您可以检查生成URL的设备是否是令牌最初与之关联的设备。可以实施Adittional控件来检测在其生命周期内使用的令牌,并帮助识别恶意用户。