登录安全闭环:连错锁定、IP 限频与审计日志
结论:Clara BBS 的登录保护不是单点功能,而是一套闭环——账号维度「连错锁定」(默认 5 次锁 15 分钟)、IP 维度「高频失败拦截」(防密码喷洒)、再加全程可查的登录审计日志,三层叠加,且到期自动解锁、后台可手动解锁。
连错锁定:默认 5 次错锁 15 分钟,防的是"慢慢猜"
结论:连错锁定针对单个账号,密码连续输错达到阈值就锁定该账号一段时间,Clara BBS 默认 5 次锁 15 分钟,阈值和时长都可在后台安全设置里调整。
它的价值在于把"暴力猜密码"的时间成本拉到不可接受:没有锁定,脚本可以每秒试几十个密码;加上 5 次上限,一天也试不了几百次,命中概率直接归零。同时密码本身是 bcrypt 存储(一种自带盐值的哈希算法),即使数据库被拖走也无法直接还原明文。
要注意两点。一是阈值别设太低,手机端输入法误触、大小写锁开着敲三次就错的用户很常见,建议 5-10 次、锁定 15-30 分钟比较平衡。二是管理员自己也会被锁——这是设计上的一致性,不是 bug;急着进去时走后台手动解锁即可,锁定期满系统也会自动解锁,不需要人工干预。
同 IP 高频失败拦截:专治"每个账号只试一次"
结论:连错锁定挡不住密码喷洒(攻击者拿一份泄露的账号密码表,对每个账号只试一两次),Clara BBS 用「同 IP 高频失败拦截」在 IP 维度补上这一刀。
密码喷洒的狡猾之处在于:单个账号只看一到两次失败,永远触发不了 5 次锁定,但一万个账号里只要有两个用弱密码,攻击者就赚了。IP 维度的限频不看某个账号错了几次,而是看同一个来源 IP 在一段时间内累计失败了多少次,超限就直接拦下,让这批请求连进入密码比对的资格都没有。
这一层最主要的注意点是误伤:公司、学校、家庭宽带经 NAT 出口共享同一个公网 IP,可能整栋楼一起被拦。所以阈值要留出正常业务的余量,并在发现持续攻击时,配合「IP 封禁」功能(支持定时封禁)把攻击源直接拉黑,而不是一味调低限频阈值。
审计日志:出事之后唯一能回溯的东西
结论:每一次登录尝试都会写进后台「用户体系→登录日志」,这是判断"到底有没有被攻破"的唯一依据。
日志的用法可以拆成三步:第一步按账号维度看失败次数,判断某个账号是不是被单独盯上了;第二步按 IP 维度看它打了多少个不同账号,这是识别喷洒攻击最直观的信号;第三步看成功记录,确认有没有异常时间、异常来源的成功登录——如果只是大量失败、没有可疑成功,说明防线还站得住,不需要惊动用户改密码。
处置动作也很常规:给被误锁的正常用户手动解锁,给确认的攻击 IP 加封禁(可设定时长),然后回到参数页微调阈值。整个过程不需要改代码,全部在后台完成。
三层怎么配合,以及别忘掉的另一半
结论:IP 限频在最外层、账号锁定在第二层、审计日志兜底,三层是纵深防御,互相不能替代。
建议的落地顺序是:先确认锁定阈值和时长符合自己社区的活跃规模,再观察审计日志一周,看清正常用户的失败分布,然后才决定要不要收紧 IP 限频——先松后紧,比一上线就调死要安全得多。
最后提醒一句,登录安全不只是登录页的事。Clara BBS 全站带 CSRF 防护(跨站请求伪造校验)、图形验证码(服务器没装 GD 库时自动降级成算术题)、注册验证问答和临时邮箱域名黑名单,这些和登录闭环是一套组合拳。真正的目标不是把攻击者挡在门外,而是让每一次尝试都留下痕迹、每一条异常路径都有对应的处置动作——这才是"闭环"两个字的含义。
转载请注明出处,版权归原作者所有。
星耀SVIP
管理员
黑卡会员





