kevin
e314b05670
fix: 修复 P1 复审漏洞 #20 #21(禁用用户会话失效 + 头像 XSS 链)
- #20 AuthRequired 改为 AuthRequired(db):受保护路由每次回库校验
Status == StatusNormal 且未软删,失败清 session(保留 lang/csrf_token,
与登录轮换口径一致)并 302 /login;session user_id 先断言为数值再入
GORM(呼应 #19),AdminRequired 同步加固;SetUserContext 仅在用户
存在且状态正常时置 is_logged_in——禁用用户发评论不再自动通过,
回落游客审核策略
- #21 头像两个分支(UploadAvatar / UpdateProfile)强制
Category == image,解码失败直接拒绝、删除"回退存原始字节"路径,
统一经 processAvatar 解码→256px 缩放→JPEG 重编码;addUploadFileType
增加危险扩展黑名单(.html/.htm/.xhtml/.xht/.svg/.xml/.js/.mjs),
拒绝添加并在上传设置页提示(模板 + 中英 i18n)
- 附带修复:processAvatar 依赖的 png/gif 解码器此前未注册(旧代码靠
回退存原始字节掩盖,PNG 头像从未真正处理过),补 blank import
- 新增回归测试 session_upload_security_test.go(6 用例:禁用/锁定/
软删旧 cookie 302、锁定用户评论转 pending、6 组危险扩展拒绝、
伪装扩展名头像拒绝且磁盘零写入、正常图片转存 .jpg;已变异验证:
去掉任一修复对应测试即失败)
- SECURITY_TODO.md 勾选 #20/#21 并更新执行顺序