【问题标题】:Is there a secure way to store passwords for a website?有没有一种安全的方式来存储网站的密码?
【发布时间】:2020-10-27 06:26:55
【问题描述】:

我正在开发一个社交网站,我已经实现了注册和登录等基本功能。我在前端使用 Basic HTML/CSS/JS,在后端使用 Python (Flask) 和 Firebase DB。问题是,我可以访问数据库,并且可以看到所有注册用户的密码。是否有一种安全的方式可以存储密码,以便管理员(我)不会滥用它?

【问题讨论】:

  • medium.com/analytics-vidhya/… :基本上你添加一个salt(一个简短的随机字符串到密码),在salt + password上运行数千次哈希函数,存储salt和哈希结果.有标准的方法:PBKDF2、Scrypt、Bcrypt、argon2、...
  • 保护密码很难。考虑改用Firebase authentication
  • 散列函数是单向的 - 它们被设计成在计算上不可行返回(即最好的攻击应该是你尝试暴力破解输入)。重复散列会减慢这种攻击。散列与加密不同(您希望能够撤消操作)。
  • @hiroprotagonist 我推荐 passlib 作为秘密管理的交换所,它有据可查,有优秀的指南,有相当好的 API,并且内置了对在线升级哈希方案的支持(虽然我不认为它有双重哈希支持)

标签: python flask cryptography


【解决方案1】:

werkzeug 会为您解决这个问题。基本上,密码以散列形式存储,因此您所看到的只是一大堆随机字符。在你的 models.py 文件中添加:

from werkzeug.security import generate_password_hash, check_password_hash

然后,无论您在何处设置用户表,都将密码设置为“generate_password_hash”。还有一个更详细的例子here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2014-05-17
    相关资源
    最近更新 更多