2.4 KiB
2.4 KiB
2026-03-21 工作日志
安全与质量优化
完成以下 10 个建议级问题的修复:
后端 (Go)
-
SanitizeSQL/SanitizeXSS 方法 -
internal/security/validator.go- 使用正则表达式替代简单字符串替换
- 添加 SQL 注入模式检测(UNION, DROP TABLE, xp_, sp_ 等)
- 添加 XSS 攻击模式检测(script, iframe, event handlers 等)
-
IP 验证正则 -
internal/security/validator.go- 使用
net.ParseIP替代手动正则 - 支持所有 IPv6 格式(包括压缩格式如 ::1, fe80::1)
- 添加 ValidateIPv4 和 ValidateIPv6 专用方法
- 使用
-
OAuth 用户名生成冲突 -
internal/service/auth.go- 添加
sanitizeUsername函数处理昵称 - 添加
generateUniqueUsername方法检查数据库唯一性 - 最多 100 次重试,添加数字后缀避免冲突
- 添加
-
LIKE 搜索特殊字符 -
internal/repository/user.go- 添加
escapeLikePattern函数转义 % 和 _ - 修改 Search 和 AdvancedSearch 方法使用转义后的关键字
- 添加
-
权限检查 N+1 查询 -
internal/api/middleware/auth.go- 添加
role.GetByIDs()批量查询方法 - 添加
permission.GetByIDs()批量查询方法 - 添加
rolePermission.GetPermissionIDsByRoleIDs()批量查询方法 - 重构
loadUserRolesAndPerms方法使用批量查询
- 添加
-
JWT JTI 使用 math/rand -
internal/auth/jwt.go- 改用
crypto/rand生成 16 字节密码学安全随机数 - 添加降级处理以应对极端情况
- 改用
前端 (React)
-
HTTP 请求超时 -
frontend/admin/src/lib/http/client.ts- 添加
DEFAULT_TIMEOUT = 30 * 1000常量 - 使用
AbortController实现超时控制 - 添加超时错误处理和友好的错误消息
- 添加
-
App.tsx 模板代码 -
frontend/admin/src/- 删除
src/App.tsxVite 模板文件 - 删除
src/App.css未使用样式
- 删除
-
CSRF Token 保护 -
frontend/admin/src/lib/http/csrf.ts- 创建完整的 CSRF Token 管理模块
- 自动为 POST/PUT/DELETE/PATCH 请求添加 X-CSRF-Token 头
- 在 AuthProvider 中集成初始化和清除逻辑
测试验证
- ✅ Go 编译通过 (
go build ./...) - ✅ Go 代码检查通过 (
go vet ./...) - ✅ Go 单元测试全部通过 (100+ tests)
- ✅ 前端 TypeScript 编译通过
- ✅ 前端构建成功 (npm run build)
- ✅ 前端单元测试通过 (5 tests)