使用 Flask-Security 为每个用户提供唯一的 Salt

2024-02-03

在阅读了一些有关对密码加盐的信息后,似乎最好为每个用户使用唯一的盐。我正在努力实现 Flask-Security atm,从文档中看来,您只能设置全局盐:即 SECURITY_PASSWORD_SALT = 'thesalt'

问题:如何为每个密码制作唯一的盐?

Thanks!

编辑:从 Flask-Security 的文档中,我发现了这一点,这似乎再次表明该模块仅对开箱即用的所有密码使用单一盐。

flask_security.utils.get_hmac(password)
    Returns a Base64 encoded HMAC+SHA512 of the password signed with the salt 
    specified by SECURITY_PASSWORD_SALT.

是的,如果使用 bcrypt(以及其他方案,例如 des_crypt、pbkdf2_sha256、pbkdf2_sha512、sha256_crypt、sha512_crypt),Flask-Security 确实会按设计使用每用户盐。

“SECURITY_PASSWORD_SALT”的配置仅用于 HMAC 加密。如果您使用 bcrypt 作为散列算法,Flask-Security 使用 passlib 进行散列,并在散列过程中生成随机盐。第 268 期指出了这种混乱:https://github.com/mattupstate/flask-security/issues/268 https://github.com/mattupstate/flask-security/issues/268

可以在代码中验证,从 encrypt 走到 passlib:

flask_security/utils.py(第 143-151、39 和 269 行)

def encrypt_password(password):
   ...
   return _pwd_context.encrypt(signed)

_pwd_context = LocalProxy(lambda: _security.pwd_context)

Flask_security/core.py(269、244-251 和 18)

pwd_context=_get_pwd_context(app)

def _get_pwd_context(app):
    ...
    return CryptContext(schemes=schemes, default=pw_hash, deprecated=deprecated)

from passlib.context import CryptContext

最后来自:https://pythonhosted.org/passlib/password_hash_api.html#passlib.ifc.PasswordHash.encrypt https://pythonhosted.org/passlib/password_hash_api.html#passlib.ifc.PasswordHash.encrypt

请注意,每次调用 encrypt() 都会生成一个新的盐,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Flask-Security 为每个用户提供唯一的 Salt 的相关文章

随机推荐

  • Git 分支 - HEAD 分支上的拉取请求也需要之前的分支提交

    我来自 IBM RTC 所以我需要习惯 Git 我已经分叉了一个存储库 在我的主分支上完成了几次提交并打开了一个拉取请求 Pull request original repository master lt my repository ma
  • 如何在 C# 中将 Decimal 格式化为以编程方式控制的小数位数?

    如何将数字格式化为固定的小数位数 保留尾随零 其中位数由变量指定 e g int x 3 Console WriteLine Math Round 1 2345M x 1 234 good Console WriteLine Math Ro
  • Keras 嵌入层在函数式 API 中具有可变长度

    我有以下适用于可变长度输入的顺序模型 m Sequential m add Embedding len chars 4 name embedding m add Bidirectional LSTM 16 unit forget bias
  • 将运输与 Ruby on Rails 集成

    将运输报价添加到我的购物车的最佳方法是什么 我网站的基本流程是 1 User selects products 2 User is shown cart 3 repeat 1 and 2 until User wants to pay 4
  • PostgreSQL:SELECT DISTINCT ON 表达式必须与初始 ORDER BY 表达式匹配

    假设我有以下 PostgreSQL 表 名为products CREATE TABLE IF NOT EXISTS mytable id serial NOT NULL PRIMARY KEY label VARCHAR 50 NOT NU
  • 为什么我在二叉搜索树中找不到左和右?

    我遇到以下代码片段的问题 using System using System Collections Generic using System Text namespace trees by firas class Program stat
  • 使用$_REQUEST作为数据是错误的吗?

    所以 我已经编码了一点 2年 了 我有一个非常主观的问题 使用 REQUEST作为数据是错误的吗 顺便说一句 这主要与身份验证有关 如果您考虑数据出现的 3 种方式 REQUEST 它可以来自 cookie 表单或查询字符串 现在 我知道大
  • 远程链接中奇怪的下划线参数

    我使用 Rails3 JQuery 和 will paginate gem 来制作远程分页链接 已知的解决方案是 pagination a live click function getScript this href return fal
  • 无法加载文件 %CommonDir%\publish.tlb

    每次我安装并尝试启动 Microsoft Visual Studio 2012 时 都会收到以下弹出窗口 其中包含以下消息 无法加载文件 CommonDir publish tlb 由于找不到该文件 尝试修复此情况失败 请重新安装该程序 我
  • 儒略日期到常规日期的转换

    如何使用 java API 将代表 2013 年 11 月 18 日的儒略日期 2456606 转换为字符串格式 18 11 2013 我尝试执行下面的代码 但它没有给我正确的答案 欢迎对以下代码进行任何更正 String j 245660
  • opencv VideoCapture 在线程中被阻塞

    我需要一些有关在另一个线程中使用 opencv VideoCapture 的帮助 当我使用视频截取 http docs opencv org modules highgui doc reading and writing images an
  • 二维码怎么能存储这么多数据呢?

    快速谷歌搜索结果显示 QR 码可以容纳近 3kb 8 位 数据 但这不就是用黑 白点来表示位吗 如果是这样的话 代码上不可能有超过 20 000 个点 所以我显然是误解了 有人可以解释它是如何工作的吗 电装波says http www de
  • 接受 Rails 使用条款

    在 Rails 应用程序中添加接受使用条款的检查的最佳方法是什么 我似乎无法得到validates acceptance of工作得很好 我在我的用户模型中添加了一个布尔值 有必要吗 然后有一个返回 true false 的复选框 我觉得我
  • AS3 中的 URL 编码变量?

    尝试通过传递变量时出现以下错误URLRequestMethod POST 错误 错误 2101 传递给 URLVariables decode 的字符串必须是包含名称 值对的 URL 编码查询字符串 有没有字符串 URL 编码的方法 Act
  • 如何根据背景图像而不是窗口浏览器来定位图像

    我以前问过这个问题 但似乎没有人明白我在说什么 因为它是书面的 所以我现在只花了 2 分 12 秒 我在视频中说明了我的问题 视频链接 该问题的相关css代码 BackgroundImage position absolute width
  • 加快 Visual Studio 2005 中的编译速度

    对于主要包含 C 项目的解决方案 在 Visual Studio 2005 中加快编译时间的最佳方法是什么 除了预编译标头之外 还有许多其他事情可能会减慢您的速度 病毒检查软件 可能会对构建产生严重影响 如果您正在运行病毒检查程序 请尝试将
  • k-means 的时间复杂度是多少?

    我正在经历k means 维基百科页面 http en wikipedia org wiki K means clustering 根据算法 我认为复杂度是O n k i n 总元素 k 簇迭代次数 那么有人可以向我解释一下维基百科上的这个
  • 没有 pyvenv.cfg 文件

    我做了一个变量cfg waterot cfg然后创建一个新文件 waterot cfg 在 pycharm 中 这会自动生成一个pyvenv cfg文件 我不知道这是什么 我的代码出现错误 我删除了pyvenv cfg文件并更改自 cfg
  • getRootNav() 和 navCtrl() 方法之间的差异

    你能告诉我以下两种方法有什么区别吗 我应该在哪个时刻使用它 book ts this app getRootNav push FromBook bookId this data id this navCtrl push FromBook b
  • 使用 Flask-Security 为每个用户提供唯一的 Salt

    在阅读了一些有关对密码加盐的信息后 似乎最好为每个用户使用唯一的盐 我正在努力实现 Flask Security atm 从文档中看来 您只能设置全局盐 即 SECURITY PASSWORD SALT thesalt 问题 如何为每个密码