Webservice、Android客户端、SSL

Webservice、Android客户端、SSL,android,web-services,ssl,Android,Web Services,Ssl,我正在使用该服务编写一个web服务(Rest)和一个Android应用程序。 没有登录,没有会话-而是在每次调用该服务时发送登录数据(用户名、密码)(通过org.apache.http.client.methods.HttpPost在org.apache.http.impl.client.DefaultHttpClient上发送)。 为了确保通信安全,我将在我的web服务器上“安装”一个简单的SSL证书(128位),并通过“https”进行调用。 这样做对吗? 通信(通过POST发送密码)是否会

我正在使用该服务编写一个web服务(Rest)和一个Android应用程序。 没有登录,没有会话-而是在每次调用该服务时发送登录数据(用户名、密码)(通过org.apache.http.client.methods.HttpPostorg.apache.http.impl.client.DefaultHttpClient上发送)。 为了确保通信安全,我将在我的web服务器上“安装”一个简单的SSL证书(128位),并通过“https”进行调用。 这样做对吗? 通信(通过POST发送密码)是否会以这种方式得到保护

服务器将为密码存储某种散列(md5,sha1)…Android应该发送密码并让Web服务生成散列还是应该发送散列


在Android上,我是存储密码还是散列(私人偏好)?

这是一个大问题。比简单回答范围内容易解决的问题更大。我认为你问这些问题是件好事,因为这表明你意识到了其中的风险

至少我可以给你一些建议。首先,md5和sha1不是保护用户凭证的适当算法,散列和盐析散列的过程本身就是一个章节。看看吧,也许可以了解一些背景。并检查bcrypt或PBKDF2作为更适合的哈希算法


当涉及到总体架构时,我建议考虑在一次调用中对用户进行身份验证,以获得某种身份验证令牌,然后将该令牌用于后续通信,而不是在每次调用中发送凭据。这不仅可以提高安全性,还可以提高性能,特别是在使用故意耗时的加密哈希算法(如bcrypt或PBKDF2)时。此外,请记住,令牌应该绑定到用户身份,而不仅仅是一些“经过身份验证的会话”。这可能不是您自己实现的,而是依赖于您正在使用的框架中的某种机制。会话管理是棘手的,例如(非常感谢,Oskar!这是很多要考虑的事情(在我知道,这不是一个简单的问题:O)…所以我会读这个(以及提供的链接)我会让你知道我的解决方案…在你的会议上玩得开心!威尔回答得很好,尽管问题很广泛。感谢你花时间提供有用的线索。