Mysql 如何为论坛注册加密用户密码?

Mysql 如何为论坛注册加密用户密码?,mysql,encryption,passwords,Mysql,Encryption,Passwords,为phpBB或MyBB论坛注册加密用户密码的最安全的方法是什么?我不希望任何人能够访问用户密码,即使是那些管理MySQL数据库的人,也不希望有人试图入侵数据库而无法查看它们。我只希望注册的用户知道他们的密码 您可以使用SHA512 我看到您使用了“mysql”标记。请不要使用SHA2()SQL函数或任何其他SQL哈希函数。如果这样做,普通字符串将通过网络发送,可能会写入一些日志中 改用PHPhash()函数,并指定'sha256'作为第一个参数。我完全同意费德里科·拉佐利的回答,除了一件事。实际

为phpBB或MyBB论坛注册加密用户密码的最安全的方法是什么?我不希望任何人能够访问用户密码,即使是那些管理MySQL数据库的人,也不希望有人试图入侵数据库而无法查看它们。我只希望注册的用户知道他们的密码

您可以使用SHA512

我看到您使用了“mysql”标记。请不要使用
SHA2()
SQL函数或任何其他SQL哈希函数。如果这样做,普通字符串将通过网络发送,可能会写入一些日志中


改用PHP
hash()
函数,并指定
'sha256'
作为第一个参数。

我完全同意费德里科·拉佐利的回答,除了一件事。实际上,哈希必须在上游执行,在任何情况下都不能在数据库级别执行(因此您的问题可能与主题无关)

但是,就安全性而言,仅使用哈希函数是不够的。通过频率分析,您仍然容易受到攻击和某些攻击必须至少使用一个

但是,最好使用一个密钥派生函数来存储密码。我建议您(使用PHP),(使用PHP,默认情况下使用明智的算法,bcrypt)或


最后,您的问题建议您使用phpBB,这个论坛引擎通常应该单独处理密码的安全存储。

这可能是离题的。然而,由于您似乎在论坛上使用3d party应用程序,您可能会被它实现的任何加密(如果有的话)所困扰。通常,数据库中的密码不加密,而是使用单向散列(如MD5或SHA)进行散列。加密密码要求您还存储加密/解密密钥,这与加密的目的背道而驰。任何时候都不要存储密码。存储不能取消加密的数据库的哈希和盐析版本。当用户登录时,你对他们登录时输入的密码进行hash+salt,并将结果与hash+salt的存储版本进行比较。你不应该对密码进行hash+salt吗?这正是我的意思,@Colin'tHart-在我的手机上打字的危险,我想是吧。或者只是因为我太迂腐了。我建议使用bcrypt,而不是
hash_pbkdf2
@Calimo:默认情况下,它使用bcrypt,所以它确实是一个不错的选择。今天大多数人认为BCREPT实际上比PBKDF2好(虽然两者都很好)。我将添加一个链接。好奇的人可能会感兴趣地看一看,(基于密码的密钥派生的Argon2i版本)的获胜者,即使它是相当新的。
password\u hash
/
password\u verify
的好处是,当PHP决定这样做时,转换到更好/更安全的算法将是完全透明的,无需重新编码,没有(或没有太多)不安全的代码遗留下来。@Calimo是的,这是一个很好的观点,我在回答中添加了关于这一点的备注。