🔴 Admin 严重问题
以下问题可能导致数据泄露、安全风险或资金损失,需优先修复。
🔴 A01
✅ 已修复
安全 · users 模块
用户密码哈希返回给前端
API:
GET /admin/users/:id源码位置:
Financial_Admin/server/routes/admin.js — users 列表查询问题描述:后端 SELECT 语句包含
password_hash 字段并将完整 bcrypt 哈希值返回给前端。虽然前端可能不渲染该字段,但数据已通过 HTTP 响应传输,存在被中间人攻击或日志泄露的风险。根因分析:SQL 查询未使用
SELECT columns EXCEPT (password_hash) 或明确列举字段,而是使用了 SELECT * 或包含 password_hash 的完整字段列表。影响范围:任何能访问
GET /admin/users 或 GET /admin/users/:id 的 Admin 账户均可获取任意用户的密码哈希。攻击者若拿到哈希可尝试离线暴力破解(bcrypt cost factor 低时更脆弱)。改进建议:
- 后端 SQL 查询明确排除
password_hash:SELECT id, phone, nickname, ..., created_at FROM users WHERE ... - 或在后端响应前删除该字段:
delete result.password_hash - 提高 bcrypt cost factor 至 12
风险评级:高 — 若 admin 账户被攻破,攻击者可批量获取用户密码哈希进行撞库攻击。