ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

NocoBase 密码策略与用户锁定:密码规则、过期管理与登录防暴力破解配置指南

NocoBase 密码策略与用户锁定:密码规则、过期管理与登录防暴力破解配置指南 NocoBase 密码策略与用户锁定密码规则、过期管理与登录防暴力破解配置指南【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase导读本文围绕 NocoBase 的「密码策略」功能展开系统讲解如何为所有用户统一设置密码规则最小长度、复杂度、历史数量、密码有效期与过期提醒以及基于无效密码登录次数限制的防暴力破解与账号锁定策略并延伸到被锁定用户的管理主动锁定与解锁。读完本文你将掌握在 NocoBase 中构建一套完整的密码安全治理方案的具体配置方法、参数取值范围、适用场景与注意事项。该功能属于 NocoBase 专业版Professional能力由nocobase/plugin-password-policy插件提供相关使用文档位于 password-policy/index.md。功能概述「密码策略」为系统内所有用户集中设置三类安全策略密码规则约束用户设置密码时的最小长度、复杂度、是否允许包含用户名、历史密码不可重复数量密码过期配置规定密码有效期并在到期前通过站内信等渠道提醒用户更换密码密码登录安全限制无效密码登录尝试次数与时间窗口超限后可按需锁定用户防止暴力破解。与此同时配套的「用户锁定」能力见 lockout.md负责管理被锁定用户既能解锁因超过无效密码登录限制而被锁定的账号也能主动锁定指定用户。被锁定的用户将禁止以任何认证方式访问系统包括 API keys。密码规则密码规则部分用于约束用户设置密码时的强度要求主要包含以下四个配置项。最小密码长度设置密码的最小长度要求密码最大长度为64。该配置决定了用户新建或修改密码时必须达到的最短字符数。密码复杂度要求系统内置了 6 档复杂度选项管理员可根据安全等级要求选择其一复杂度选项说明必须包含字母和数字密码中必须同时出现字母与数字必须包含字母数字和符号密码必须同时包含字母、数字与符号必须包含数字大写和小写字母密码必须同时包含数字、大写字母与小写字母必须包含数字大写和小写字母符号密码必须同时包含数字、大小写字母与符号必须包含以下字符的其中 3 种数字、大写字母、小写字母和特殊字符四类字符中至少包含三类不限制不强制任何复杂度要求密码不能包含用户名设置密码是否允许包含当前用户的用户名。开启后用户设置的密码中若包含其用户名将被拒绝。密码历史数量记住用户最近使用过的密码个数用户修改密码时不能重复使用这些历史密码。0 代表不限制即不校验历史密码最大数量为24。该配置用于防止用户频繁在少量弱密码之间来回切换。密码过期配置密码过期配置用于强制用户定期更换密码降低长期使用同一密码带来的泄露风险。密码有效期用户密码的有效期。用户在密码过期前更换密码后有效期会重新计算若未在过期前更换密码将无法使用旧密码登录需要管理员协助重置。如果系统配置了其他登录方式用户仍可使用其他方式登录系统。密码过期提示通知渠道用户密码到期的10 天内用户每次登录时都会收到提醒。默认发送到「密码过期提醒」的站内信渠道可以在 NocoBase 的通知管理中管理该渠道例如增加邮件、短信等发送渠道。配置建议密码过期可能导致账号无法登录包括管理员账号因此请及时修改密码建议在系统中设置多个可以修改用户密码的账号避免单一账号因过期而被锁在系统外时无人可代为重置。密码登录安全密码登录安全用于设置无效密码登录尝试限制是抵御密码暴力破解的核心防线。最大无效密码登录尝试次数设置用户在规定时间间隔内最多可以尝试的无效密码登录次数。最大无效密码登录时间间隔秒设置计算用户最大无效登录次数的时间间隔单位为秒。上述两个参数组合起来即表示「在 N 秒内最多允许 M 次无效密码尝试」。锁定时间秒设置用户超过无效密码登录限制后锁定用户的时间0 代表不限制即锁定后需管理员手动解锁。用户被锁定期间将禁止以任何认证方式访问系统包括 API keys。如果需要主动解锁用户可以参考 用户锁定。典型场景配置场景一不限制不限制用户无效密码尝试次数即关闭登录尝试限制能力。场景二限制尝试频率不锁定用户例如配置「用户每 5 分钟最多可以尝试登录 5 次」即「最大无效密码登录尝试次数 5」且「最大无效密码登录时间间隔 300 秒」锁定时间保持为 0或不做锁定。场景三超过限制后锁定用户例如配置「用户 5 分钟内连续 5 次无效密码登录锁定用户 2 小时」即「最大无效密码登录尝试次数 5」、「最大无效密码登录时间间隔 300 秒」、「锁定时间 7200 秒」。配置建议无效密码登录次数和时间间隔配置通常用于限制短时间内高频的密码登录尝试防止暴力破解是否锁定用户需要结合实际使用场景考虑锁定时间设置可能被恶意利用攻击者可能针对目标账号故意多次输入错误密码迫使账号被锁定而无法正常使用。可以结合 IP 限制、API 频率限制等手段来防范这类攻击由于账号锁定后将无法进入系统包括管理员账号建议在系统中设置多个有权限解锁用户的账号。用户锁定管理「用户锁定」页面用于集中管理被锁定的用户入口与密码策略同属安全模块详见 lockout.md。解锁用户因超过无效密码登录限制而被锁定的用户可以通过删除对应的锁定记录来解锁锁定用户通过添加用户锁定记录可以主动锁定指定用户。用户被锁定后将禁止以任何认证方式访问系统包括 API keys。底层实现佐证密码存储与验证链路虽然密码策略插件本身不在此仓库源码树中但其依赖的密码存储与认证基础设施可以在仓库中直接找到对应实现用于理解策略生效的底层链路。密码字段scrypt 哈希存储密码在数据库中并非明文保存。NocoBase 的PasswordField字段类型实现在 packages/core/database/src/fields/password-field.ts第 16 行定义了PasswordFieldOptions接口它继承自BaseColumnFieldOptions即密码字段可以像普通字段一样声明在用户集合的字段配置中第 33 行声明了export class PasswordField extends Field第 82、94 行分别对应密码设置与校验流程使用 Node.js 内置的crypto.scrypt算法对密码字符串加盐派生密钥再与存储的哈希比对确保密码不会以明文形式落库或传输。登录认证密码校验与失败响应密码策略中的「无效密码登录」计数正是建立在登录认证环节的密码校验失败之上。以账号密码登录插件为例packages/plugins/nocobase/plugin-auth/src/server/basic-auth.ts 中第 52-53 行从用户集合中取出password字段并通过field.verify(password, user.password)校验用户提交的密码与存储的哈希是否匹配第 55 行在校验失败时抛出 HTTP 401「用户名/邮箱或密码错误」异常——这些失败尝试即被密码策略的无效登录计数器所统计作为锁定判定的输入。由此可以推断密码策略插件通过监听认证插件的失败事件并结合用户维度的时间窗口计数实现「最大无效密码登录尝试次数 时间间隔 锁定时间」的联动判定被锁定用户在锁定期间会被认证链路直接拒绝因而「包括 API keys 在内的所有认证方式」均无法访问系统。小结NocoBase 的密码策略覆盖了「密码设置强度」与「登录行为安全」两个维度密码规则通过最小长度最大 64、6 档复杂度、禁止包含用户名、历史密码数量最多 24 条约束密码本身的强度密码过期通过有效期与到期前 10 天登录提醒推动用户周期性更换密码并可结合通知管理扩展提醒渠道登录安全通过「尝试次数 时间间隔 锁定时间」组合既可只做频率限制也可在超限后锁定账号配合「用户锁定」页面实现主动锁定与解锁。在落地时请务必注意过期与锁定都可能波及管理员账号因此应提前设置多个具备修改/解锁权限的账号并结合 IP 限制、API 频率限制等机制防范恶意锁定攻击。整个策略体系建立在 password-field.ts 的 scrypt 哈希存储与 basic-auth.ts 的认证校验链路之上是 NocoBase 账号安全治理的重要组成。【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表