首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确处理Android应用程序的密码

如何正确处理Android应用程序的密码
EN

Security用户
提问于 2016-08-24 15:52:34
回答 2查看 7.2K关注 0票数 2

所以,一些背景。我目前正在为Android开发一个社交媒体应用程序。我们正在用Java编写程序,并使用OKHTTP3连接到PHP后端,这将处理MySQL数据库的更新和存储。

我的问题是:我应该如何处理密码?一旦用户在登录表单中输入他们的凭据,我是否会散列密码(我们计划使用bcrypt),然后通过PHP后端将它们发送给立即存储?或者PHP后端需要进行更多的安全性哈希或加密?

我认为现在要做的方式是: 1.用户输入注册凭证2.密码被散列3.凭证被发送到服务器4.凭证被输入到MySQL --应该做什么不同的事情?这样行吗?

阅读制作一个iPhone/Android应用程序,向我的服务器发送用户密码,如何安全?并没有很好地回答我的问题。

EN

回答 2

Security用户

发布于 2016-09-23 17:03:33

你误解了哈希的目的。

密码安全散列是一个单向函数,因此,除非使用暴力,否则无法确定原始文本(密码)。

在您的示例中,没有必要找到原始文本。如果攻击者窃取了哈希,那么他们仍然可以在不知道原始密码的情况下登录,只需修改应用程序的副本就可以使用偷来的哈希,而不是生成新的哈希。

您的服务器应该在内部进行散列,而不是应用程序。(客户端)

对于密码,您必须使用慢速哈希(如BCrypt ),其工作因子较高。这应该占用您的目标硬件100‘s(适当的DoS保护),因为知道攻击者的蛮力硬件将更快。

请记住,弱passwords不能被保护,不管您的散列函数有多慢。

还要确保在应用程序和服务器之间使用HTTPS连接,因为移动用户可以使用共享的WiFi,这很容易被用来欺骗普通的HTTP连接。

票数 2
EN

Security用户

发布于 2016-08-24 16:06:56

您可以对要发送到服务器的输入进行通常的regex检查。使用https连接发送凭据。也许改造而不是okhttp3?(仅仅是为了简单,而不是出于安全原因)。这是启动国际水文学组织的良好基础。如果您需要在android上存储信息,您可以使用领域。它是一个支持加密的移动数据库,是在设备上存储信息的简单解决方案。如果您只需要存储密码,我建议您使用android系统的"Keystore“功能。

票数 -2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/134844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档