Files

41 lines
2.5 KiB
Markdown

# 第 2、5 项安全修复离线回归
本测试直接链接生产代码的 BasePageInput、OnboardingOperationGate、OnboardingSignStateGuard 和状态常量。
不启动业务程序、不连接业务数据库、不联系契约锁,也不查询在线漏洞库。
SqlSugar 只生成 SQL。互斥测试使用模拟的外部租约,不代表 MySQL 集成测试。
## 运行
先在后端构建相应 net6.0 项目,确保 SimpleAdmin.Web.Entry/bin/Debug/net6.0 下已有 SqlSugar.dll 和 Newtonsoft.Json.dll。
测试需要本机已安装 .NET 8 SDK/运行时。
在后端目录执行:
```powershell
dotnet run --project tests/SecurityRegression/SecurityRegression.csproj -p:NuGetAudit=false -p:UseSharedCompilation=false
```
测试使用本地 empty-feed,不向外网发送依赖信息。无新增 NuGet 包。
框架校验属性和友好异常由 Stubs.cs 替代;核心排序、异步重入和状态迁移逻辑直接引用源文件。
## 覆盖
- SQL 排序表达式、注释、分号、制表符、换行、未知字段被拒绝。
- asc/desc/ascend/descend、大小写及空排序方向兼容。
- 安全排序由本地 ORM 生成 SQL。
- 签约终态、防回退、归档状态保持。
- 64 个竞争调用与同任务互斥;不同任务互不阻塞。
- 同调用链嵌套任务锁可重入;正常/异常结束释放锁;调用方上下文不泄漏。
- 按版本选择公司盖章及骑缝章:四份材料全部员工签字,仅指定两份盖章。
- 单份/合并骑缝章只覆盖已选文件;两个开关独立;历史空值兼容全局设置。
- 纯员工签字的草稿无企业盖章节点;混合材料仍由后台人工触发企业盖章。
- 版本盖章开关局部更新:开启/关闭均保留布尔值,只更新传入的字段,版本 ID 只用作条件,不更新主键、另一个开关或版本状态;空请求被拒绝。
- 局部更新测试直接链接生产 SQL 构造代码和请求 DTO;版本实体仅使用带主键映射的测试替身,不代表真实数据库写入或权限集成测试。
- 请求构造器直接链接生产代码,只校验构造出的参数,不向契约锁发起真实签约。
## 仍需测试环境验证
MySQL GET_LOCK/RELEASE_LOCK 的多会话、多实例互斥、实际业务事务回滚、
提交与审核/撤销竞争、转正与编辑竞争、重复/乱序契约锁回调、企业盖章网络断开及中断恢复。
不得将这套离线用例当成真实平台压测或数据库集成测试结果。