在MySQL数据库存储的用户名和密码的最佳实践[复制](Best practice for stor

2019-06-24 02:33发布

可能重复:
安全散列和盐的PHP密码

我想提出的是在一个MySQL数据库中存储的用户凭据(电子邮件,用户名和密码),并使用加密,盐渍和加密类型已经看到矛盾的观点的系统。

什么是你会推荐最好的方法是什么? 编码的MD5或SHA-1? 盐渍或腌制不? 只是加密密码或所有3个元素?

Answer 1:

对于密码哈希使用PBKDF2是NIST认可 。 您应该使用一个随机的非秘密盐每个密码和平凡的(1000)迭代次数。

对于用户名和电子邮件,可能不值得进行加密。



Answer 2:

最好的做法是IMO:

  • 使用哈希算法如SHA256或SHA512。 MD5现在是不安全的,你可以扭转的哈希/执行彩虹攻击。

  • 使用一个强大的盐,以确保如果他们获准进入你的数据库攻击者无法猜测常用哈希密码。

  • 不要使用加密。

  • 只有散列密码,用户名和电子邮件的罚款为纯文本。



Answer 3:

这只是真的,你需要加密的密码。 实际上,你既要Hashing (这时候你说的编码你的意思)的算法至少 SHA-256真的(我敢肯定,MD5和SHA1是攻破?) Salting你的密码是更加安全。

下面是关于它们存储的首选方法的答案: 首选方法存储的口令在数据库



Answer 4:

用户名和电子邮件不应该被加密,你需要他们的明文,他们会更加有用的方式。

作为密码:他们要绝对被加密或散列,优选盐太。 到现在为止,我用了一个有点有趣的技术来做到这一点:AES,关键的是密码本身。 因此,如果用户使他的密码是“blabla123”,那么我会通过调用存储在MySQL AES_ENCRYPT('blabla123', 'blabla123') 有2个优势是:

  • 你不存储加密密钥的任何地方
  • 每个密码被使用不同的密钥进行加密。 所以,即使你弄清楚一个关键的,它会对它的用处是有限的。

有效性然后通过加密什么类型的用户和比较2点的值来完成。



Answer 5:

密码应具有较强的盐散列来保护(MD5或SHA-1是罚款),以防止攻击使用彩虹表。

你不应该哈希的电子邮件地址 - 只要你凑它,您无法使用它比对什么类型的用户检查其它任何东西,所以有它散列会阻止您发送电子邮件的那个人。 同样的用户名会被最好存储在纯文本,让你确定那个人。



文章来源: Best practice for storing usernames & password in MySQL Databases [duplicate]