如何使这个盐和哈希计划更安全?

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

嗨,我只是计划我的移动应用程序的服务器登录安全性,并记下了一个简单的计划。它看起来是否安全,是否可以通过任何方式进行改进?提前致谢。

客户端首次登录

  1. 从客户端获取设备ID并发送到服务器。
  2. 使用新用户ID在服务器和用户帐户上创建MD5 salt。
  3. 将salt与设备ID和用户ID连接以创建salted密码。
  4. 创建盐渍密码的MD5哈希并将哈希密码存储在数据库中。
  5. 将用户ID和Salt返回给客户端。

客户再次登录或提出一般要求

  1. 使用从服务器接收的salt并使用设备ID和用户ID连接,将请求发送到客户端生成的MD5哈希值。还以纯文本格式发送设备ID和用户ID。
  2. 验证存储在数据库中的用户设备ID和用户ID是否与客户端发送的相同。
  3. 验证用户发送的MD5哈希是否与该用户设备的数据库中存储的哈希相同。
  4. 验证并继续处理请求。
security hash salt
1个回答
0
投票

如果担心安全问题,我建议不要将设备ID用作密码,原因如下:

  1. 它不是秘密信息,可以通过许多网络呼叫以明文形式发送到许多服务器,这意味着它可以很容易地被第三方获得。
  2. 如果恶意第三方获得它,则无法轻易更改。
  3. 如果电话易手,则ID将保持不变,允许新电话所有者以前一个用户身份登录。

另一种方法显然是让用户选择自己的密码,但我猜你已经考虑过了,并且你选择使用设备ID,因为它使用户的体验尽可能无摩擦。

因此,我建议在用户安装应用程序并将其存储在设备安全存储(密钥库/密钥链)中时生成uuid。在第一个请求中,将其与用户ID一起发送到服务器。应生成临时会话ID并将其返回给客户端,然后可以使用该ID验证连续的请求。

此外,MD5不应用于密码散列,因为它不能抵抗暴力攻击。更好的算法选择是bcrypt或pbkdf2。

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