【问题标题】:What's the safer way to store a password in MySQL database? [duplicate]在 MySQL 数据库中存储密码更安全的方法是什么? [复制]
【发布时间】:2012-10-25 20:02:54
【问题描述】:

可能重复:
PHP 2-way encryption: I need to store passwords that can be retrieved

最近阅读一些关于在数据库中存储密码的教程,我有点困惑。大多数网站说最好是使用哈希和盐来存储密码,或者将密码分成两部分存储,或者为所有密码添加一个通用密钥。

我看到了几种使用 crypt、sha、sha256、md5 和河豚的方法。

我的问题是,在河豚中使用 crypt 函数是安全的还是有更好/更安全和更有效的密码存储方法?

【问题讨论】:

  • 安全的方法是根本不存储密码。正如您所提到的,只需使用像漩涡这样的慢速散列算法存储一个散列。您需要存储实际密码是否有特殊原因?
  • 在 S.O 上的线程数不能超过几千个
  • 没有什么是安全的,但存储在数据库中的较长随机盐与哈希一起存储,而不是密码,使用 crypt 应该没问题。
  • 另外,请记住,这里的每个人都是安全专家(以一种好的方式)。如果您正在运行一个小型网站,则不需要使用企业级安全性。一个简单的哈希 + 盐应该绰绰有余。
  • 但如果我的网站最终变成一个大网站,我将无法更改安全类型,因为所有用户哈希都已存储。因此,我想从一个好的散列算法开始开发。

标签: php mysql passwords


【解决方案1】:

好吧,除了显而易见的,不存储,散列等...... 如果可以的话,我想说不要使用常规的 {MD5, SHA1, SHA256, SHA512, SHA-3, etc},即使你可以加盐。原因可以在以下位置找到:

http://codahale.com/how-to-safely-store-a-password

简单地说:使用 bcrypt

您可能想阅读有关此主题的内容

Password hashing, salt and storage of hashed values
http://dustwell.com/how-to-handle-passwords-bcrypt.html
https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet

【讨论】:

    猜你喜欢
    • 2012-09-13
    • 2013-02-11
    • 1970-01-01
    • 2015-11-11
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多