MFA 绕过公告盯上的是登录态,二次验证要不要一起查
认证绕过类公告为什么总盯住「记住登录状态」的 cookie?因为这类长期票据保存的不是一次登录的结果,而是持续的身份认定。口令只在验证那一刻被检查,之后系统认的就是票据。一旦票据的签发或校验环节有问题,攻击者拿到的就是绕过整个登录流程的入口——包括绕过二次验证本身。Joomla 的 rememberme cookie 绕过公告就是这一类:受影响区间写作 4.0.0 至 5.4.8 与 6.0.0 至 6.1.3,修复日期 2026-09-25。
记住登录状态存了什么
为了让用户下次打开不用重新登录,站点会在浏览器里留下一个可以长期使用的凭证,并在服务端保存与之对应的校验值。它和普通会话标识的区别在于寿命:普通会话在关闭浏览器或者超时后失效,长期凭证按设计可以用很久。
寿命就是风险来源。一个有效期数十天的凭证,被截获后被利用的时间窗口同样长;而它通常还带有自动续期逻辑,被悄悄更换时更难发现。所以这类机制的安全边界从来不在于「有没有加密」,而在于签发校验是否严格、凭证能否被撤销。
绕过点为什么在票据校验
票据机制的问题一般不出现在内容本身,而出现在校验流程:解析方式与签发方式不一致、校验条件写得宽松、或者验证顺序里存在可以跳过的分支。绕过类公告盯着这一层,是因为只要校验判定错一次,攻击者得到的就是完整的后台身份。
AnQiCMS 后台登录使用 JWT 一类令牌机制,风险分布是同一形态:令牌的签发校验、有效期、撤销路径三项决定了整套认证的实际强度。系统层面的做法是让凭证具备时效,比如站点切换一类操作用一次性票据,用完即失效,而不是发出一个长期可用的凭据。
这条原则可以拿去检查自己的站点:凡是「有效期长、可自动续期、又不提供撤销入口」的凭证,都属于要重点关注的对象。
二次验证挡不住的部分
二次验证解决的是「登录那一刻是不是本人」,它不参与之后每一次请求的判定。长期凭证一旦被拿走,携带者不需要重新经过验证环节——这就是绕过类公告里二次验证失效的原因。
所以开了二次验证之后还要补三件事:验证结果是否绑定在短期会话上,长期凭证有没有独立的撤销入口,账号异常时能否强制让所有已发凭证失效。这三项都属于机制问题,不是靠加强验证强度能覆盖的。
同理,表单侧的 reCAPTCHA 验证码属于另一层控制:它挡的是自动化提交,不替代身份校验。把验证码当成登录保护,遇到直接针对后台接口的尝试时并不起作用。
登录侧该配的三项控制
第一项是有效期与撤销。会话按设计超时,长期凭证要有可撤销的路径,并且撤销要能立即生效,而不是等到下一次自然过期。
第二项是凭证轮换。修改管理员密码不等于所有已发凭证失效。升级涉及认证逻辑修复时,应当同时轮换签名用的密钥并让管理员重新登录,这样即使此前有凭证被取走,也无法继续使用。AnQiCMS 的 v3.6.6 在修复登录凭证可被伪造的问题时,升级建议里就同时包含密钥轮换与修改管理员密码两项——修漏洞与撤销已泄露的凭证是两步。
第三项是最小暴露。后台入口、认证接口在公网上的可达范围越窄,被批量扫描的概率越低;面向自动化工具的接口按用途划分暴露范围,全站级的高危操作不默认开放,写操作保留回合级确认,都是同一取向的延伸。
常见问题
是不是应该关掉记住登录状态?看使用场景。管理员账号建议只用短会话,长期凭证留给确实需要的低权限场景;如果后台可以直接改全站内容,长期便利的代价通常大于收益。
已经升级到修复版本就够了吗?升级关闭的是绕过入口,此前签发出去的凭证不会自动失效。轮换与强制重新登录要一起做。
怎么判断自己有没有长期凭证?看浏览器里在关闭会话后仍然存在的条目,以及后台是否提供「退出所有设备」这类全局撤销入口——没有撤销入口通常意味着机制不完整。
一个判断口径
认证强度的评估要看链条上最短的一环。口令和二次验证管登录那一刻,票据的有效期、校验与撤销管之后每一天。绕过类公告反复出现在第二种环节上,正因为这一环平时最容易被当作已经解决。