youpaishidifu
94403a1a06
加固-08(P0-05b): 登录哈希写回幂等化,同账号并行会话不被后续登录破坏
背景:P0-07 支付加固回归中发现——admin/agent 登录成功时无条件重新生成
bcrypt 哈希并覆盖 DB 密码列。同一账号第二次登录后,第一次会话的
$_SESSION[xx_password](存"存储值"设计)与 DB 新哈希不再相等,
checklogin 的 WHERE username AND password=会话 重校验失败,
首个会话的后续操作(支付、后台操作)被拒。P0-05 原意只应在"旧格式
惰性迁移"时写回新哈希,现已哈希的存储值重复登录不应再变。
修复(仅当存储值尚未为 bcrypt 时写回新哈希,否则沿用原值):
- admin/ajax.php 登录:$newhash = wq_is_hashed_password($result['password'])
? $result['password'] : wq_hash_password($_POST['password'])
- agent/ajax.php 登录:同上
- (API 用户登录 api/Communication.php 已有该条件判断,无需改动)
- 惰性迁移语义不变:旧 md5(admin)/ 旧明文(agent)仍登录一次即升级 bcrypt
回归(P0-05b 13 项全 PASS,8082 内置服务器):
- admin 双会话:第二次登录不改写 DB 哈希;两个会话 checklogin 均有效
- 模拟旧明文代理(DB 直接置明文):登录一次即升级为 bcrypt;
第二次登录哈希不变;两个会话 checklogin 均有效
- P0-07 回归中的 yezf 双会话并发测试由本修复解锁(先前首会话因
再登录被破坏而报"代理账号或密码不匹配")
2026-10-10 13:06:45 +08:00
..
2021-07-14 17:16:59 +08:00
2019-12-09 10:23:56 +08:00
2026-10-10 13:06:45 +08:00
2026-10-10 11:10:29 +08:00
2021-07-20 13:43:34 +08:00