| 版本 | 支持状态 |
|---|---|
| 最新 main 分支 | ✅ 支持 |
如果您发现安全漏洞,请不要通过公开 Issue 报告。
请通过以下方式私下报告:
- GitHub Security Advisories(推荐):在仓库页面点击 "Security" → "Report a vulnerability"
- 邮件:发送至项目维护者邮箱(请在 README 中查找联系方式)
请尽可能包含以下信息:
- 漏洞类型(如 SQL 注入、XSS、越权访问等)
- 影响范围和潜在危害
- 复现步骤(含代码片段、请求示例等)
- 可能的修复建议(如有)
- 确认收到 — 我们会在 48 小时内确认收到报告
- 评估影响 — 分析漏洞的严重性和影响范围
- 制定修复方案 — 开发并测试修复补丁
- 发布修复 — 合入修复代码并发布安全更新
- 公开披露 — 在修复发布后适当时间公开漏洞详情
- 认证:JWT 无状态认证,Token 支持刷新和黑名单
- 授权:基于 Permission 的细粒度权限控制(非角色直接控制)
- 输入验证:FluentValidation 声明式 DTO 校验
- SQL 注入防护:EF Core 参数化查询,无原生 SQL 拼接
- XSS 防护:前端使用 DOMPurify 净化 HTML 输出
- 敏感数据保护:手机号 AES 加密存储,审计日志字段自动脱敏
- 接口幂等性:
Idempotency-Key请求头防重复提交 - 限流:固定窗口限流,登录接口单独限制防暴力破解
- 安全响应头:SecurityHeadersMiddleware 添加标准安全头
- 容器安全:非 root 用户运行,只读文件系统,no-new-privileges
项目集成了以下安全扫描:
- Semgrep — 静态代码分析(pre-commit hook)
- Trivy — 依赖漏洞扫描(CI 自动运行)
- npm audit — 前端依赖审计
- SonarLint — IDE 实时代码质量检查(推荐安装)
# Linux/macOS/Git Bash
./scripts/security-scan.sh
# Windows
scripts\security-scan.bat- 生产环境必须使用强密钥(JWT Key ≥ 32 字节,DataProtection Key ≥ 32 字节)
- 生产环境敏感配置建议通过环境变量覆盖 appsettings.json 中的默认值
- 启用 HTTPS 并配置 HSTS
- 定期更新依赖包
- 数据库使用强密码并限制网络访问
- 不要在代码中硬编码任何密钥或密码
- 用户输入必须验证和参数化
- 新增
v-html、文件读写、反序列化等操作需额外安全审查 - 提交前运行安全扫描脚本
感谢所有报告安全问题的安全研究人员和贡献者。