日期:2026-10-16
状态:待评审
业务方要求:
111111 的用户,统一改为强密码 Zkxw@123。本次交付:只出报告、不改业务代码;弱密码另附可执行刷新脚本/SQL。
| 项 | 决策 |
|---|---|
| 扫描方式 | 方案 A:静态代码审计(人工 + 定向检索) |
| 扫描交付 | Markdown 报告:问题清单 + 风险等级 + 文件位置 + 简述与建议 |
| 代码修复 | 本次不做;报告中给出建议,后续另开任务 |
| 弱密码目标 | 111111 → Zkxw@123 |
| 弱密码识别 | 因 bcrypt 随机盐,须用应用侧 bcrypt.checkpw 校验,不能纯 SQL WHERE password='111111' |
| 弱密码范围 | sys_user,del_flag = 0;含已禁用用户(status != '1' 也刷新,避免复用账号时残留弱口令) |
纳入:
backend/app/:原始 SQL / text()、字符串拼接查询、动态 SQL(含工作流审批人 SQL 策略)、鉴权与敏感接口相关模式web-admin/src/:v-html、未消毒 HTML、innerHTML 等 XSS 相关用法mobile-oa-h5/src/、mobile-h5/、miniprogram/ 中同类模式,若存在)排除:
backend/venv/、node_modules/、第三方静态资源(如 web-admin/public/tinymce/)docs/** 演示页、mobile-ui/** 等),除非被生产路径引用| 类别 | 关注点 |
|---|---|
| SQL 注入 | text() + 用户可控拼接;f"...SELECT...";% / .format 拼 SQL;工作流 strategy=sql |
| XSS | v-html 是否经 sanitizeHtml/DOMPurify;未消毒的 innerHTML |
| 认证/口令(信息项) | 默认弱口令文档、明文登录开关等(记入报告,不强制本次改代码) |
| 其他高信号 | 硬编码密钥/口令、危险 eval/new Function(业务代码) |
路径:docs/testing/2026-10-16-security-scan-report.md
每条问题包含:
报告末尾附:扫描方法说明、覆盖范围、已知局限(静态审计无法替代动态渗透)。
sys_user.password 存 bcrypt($2b$...),每次哈希盐不同。UPDATE ... WHERE password = '111111' 命中所有弱密码用户。Zkxw@123(写入运维说明;哈希由脚本生成)。| 文件 | 作用 |
|---|---|
backend/scripts/reset_weak_password_111111.py |
主路径:连接当前环境库,逐用户 verify 是否为 111111,命中则更新为 Zkxw@123 的新 bcrypt 哈希;打印命中 user_no / 数量;支持 --dry-run |
docs/sql/2026-10-16-reset-weak-password-111111.sql |
辅助:说明为何不能纯 SQL 筛选;给出预生成示例哈希与单条 UPDATE 模板;引导使用上述 Python 脚本 |
.env / .env.local 等)。sys_user:del_flag = 0,取出 id, user_no, password, status。111111;命中则 password = bcrypt(Zkxw@123),更新 update_time(若列存在)。--dry-run 只列出将修改的账号。111111 的密码。sys_user 或整库。admin / 111111)后续由文档任务单独更新(本次可不改 AGENTS.md,可在报告「信息」项列出)。111111 的用户--dry-run 可列出命中用户;正式执行后原 111111 用户可用 Zkxw@123 登录。