我正在创建一个数据库,我需要存储用户密码。我已经在客户端使用 bcrypt 对密码进行哈希处理,但我读到,就数据库而言,只有在客户端进行哈希处理才能使哈希值本质上等同于密码。我想在将密码存储到数据库之前再次对密码(现在是哈希值)进行哈希处理。我是否必须使用 MySQL 原生的方法,例如 SHA2(pwd)
,还是有办法在服务器上使用 bcrypt?
最佳答案
Bcyrpt 在这里是一个很好的调用,但是您应该在服务器端而不是客户端上进行哈希处理。客户端无法知道生成可验证其正确性的哈希所需的所有信息,只有服务器拥有该信息。
您需要做的是安全地传递密码(例如通过 HTTPS),并在应用程序层对其进行哈希处理。 MySQL 本身不具备进行正确密码散列所需的功能。 SHA2 是完全不够的,它是一种高速哈希设计,这使得它立即不适合。密码散列算法故意变慢,使暴力破解密码变得非常昂贵。
关于MySQL-如何实现服务器端密码哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42848556/