在将用户密码发送到服务器之前,我应该先对其进行加密吗?

问题描述 投票:1回答:3

我想通过允许用户创建用户名和密码来认证用户。由于我只找到有关它的旧文章,因此我正在创建此文章。

在发送到服务器之前,我应该对密码进行加密吗?如果是这样,我该怎么办?如果没有,我应该在对服务器的POST请求中使用一些特定的配置吗?

我应该使用任何可靠的第三方api吗?

我知道Google拥有用于此功能的androidx API,但仍处于Alpha状态。

android security
3个回答
1
投票

如果您使用HTTPS协议与服务器通信,则在发送数据之前已经对数据进行了加密,无论如何,我建议您使用Cipher进行其他加密。

PS请查看此问题以获取更多How to encrypt String in Java


0
投票

[您可能会进行基本的混淆,例如Base64或类似的东西,就像Marco提到的那样,HTTPS已经确保了通道的安全,中间的人将看不到信息。

代替加密,您可以添加一个安全验证,以确保HTTPS证书是受信任的,因此也禁止使用诸如Charles Proxy之类的代理。


0
投票

加密采用需要安全分发的加密密钥。由于需要将密码(或密码的衍生物)存储在服务器端以进行后续身份验证,因此我建议至少在注册用户名/密码时以明文形式发送密码。当然,假设使用HTTPS强制执行安全协议和主机名验证。这样做的好处是,您无需向服务器API的特定算法添加隐式依赖关系。相反,当在数据库中存储密码(或派生密码)时,服务器应用程序可以将其隐藏为内部详细信息。这使API的开发过程不再那么痛苦。

[通常建议使用证书固定(即,对服务器证书客户端进行“硬编码”,但是根据您的使用情况,这可能会过度设计,因为这将需要证书生命周期管理。

所有这些都说。至少在短期内,您可能会受益于使用第三方服务(例如AWS Cognito)进行身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.