研发安全基线标准
一、代码安全¶
1.1 输入验证¶
- 所有外部输入必须验证:包括 HTTP 参数、Header、Cookie、文件上传、API 请求体
- 白名单优于黑名单
- 长度、类型、格式、范围四维校验
- 文件上传需校验:扩展名 + MIME + 魔术字节,存储路径与 Web 目录隔离
1.2 输出编码¶
- HTML 输出 → HTML Entity 编码(防 XSS)
- SQL 拼接 → 强制参数化查询 / 预编译(禁止字符串拼接)
- 命令执行 → 禁止直接拼接用户输入,使用参数数组传参
- LDAP/XPath/NoSQL → 对应上下文转义
1.3 禁止使用的危险函数¶
| 类型 | 禁用 | 替代 |
|---|---|---|
| 命令执行 | system() exec() eval() | 参数化 API |
| 反序列化 | 不可信数据的 unserialize() pickle.loads() | JSON + 严格 schema |
| 动态执行 | eval new Function() | 静态逻辑 |
| 随机数 | Math.random() rand() | CSPRNG |
二、认证与授权¶
2.1 认证¶
- 密码存储:bcrypt / Argon2id(禁止 MD5/SHA1/明文)
- MFA:高权限操作强制二次验证
- 登录失败锁定:5次失败 → 锁定15分钟 + 告警
- Session ID:登录后必须重新生成(防 Session Fixation)
2.2 授权¶
- 默认拒绝原则(Default Deny)
- 每个接口服务端独立鉴权,不依赖前端隐藏
- 水平越权:操作资源时校验资源归属(
owner_id == current_user_id) - 垂直越权:角色权限矩阵集中管理,禁止硬编码角色判断
2.3 Token 管理¶
- JWT:禁止
alg:none,服务端强制校验签名算法白名单 - Access Token 有效期 ≤ 15分钟
- Refresh Token 单次消费(使用后立即轮换)
- 敏感操作 Token 绑定 IP + UA 指纹
三、数据安全¶
3.1 敏感数据处理¶
- 传输:全链路 TLS 1.2+,禁止降级
- 存储:PII / 密钥 / 凭证 加密存储(AES-256-GCM)
- 日志:脱敏后记录(手机号
138****8888,密码字段完全屏蔽) - 内存:使用后及时清零(特别是密钥材料)
3.2 密钥管理¶
- 禁止硬编码在代码、配置文件、Git 仓库
- 使用 Vault / KMS / Secret Manager 统一管理
- 定期轮换策略(90天)
- Git 提交前置检查(pre-commit hook 扫描密钥)
四、通信安全¶
| 项目 | 要求 |
|---|---|
| 协议版本 | TLS 1.2 / 1.3,禁用 SSL、TLS 1.0/1.1 |
| 加密套件 | 禁用 RC4、DES、3DES、EXPORT |
| 证书 | 有效期验证 + HSTS(max-age ≥ 1年) |
| CSRF | 敏感接口强制 Token 校验 / SameSite=Strict |
| CORS | 白名单控制,禁止 * + credentials: true |
| 请求头 | X-Frame-Options: DENY、CSP、X-Content-Type-Options: nosniff |
五、依赖与供应链¶
- 第三方组件:上线前必须通过 SCA 扫描(Snyk / OWASP Dependency-Check)
- 禁止引入 EOL(End of Life)组件
- 锁定依赖版本(
package-lock.json/requirements.txtpinned) - 镜像基础层:每月更新 + 漏洞扫描(Trivy / Grype)
- 私有 Registry:禁止直接拉取公网未经审查的包
六、日志与监控¶
6.1 必须记录的安全事件¶
- 登录成功 / 失败(含 IP、UA、时间)
- 权限变更、角色分配
- 敏感数据访问(导出、批量查询)
- 配置变更、管理操作
6.2 日志规范¶
- 禁止记录:密码、Token、密钥、完整卡号
- 格式:结构化 JSON,含
trace_id便于关联 - 存储:与应用隔离,只写权限,保留 ≥ 180天
- 告警:异常登录、高频请求、特权操作实时告警
七、安全开发流程(SDL)¶
需求阶段 设计阶段 开发阶段 测试阶段 上线阶段
──────── ───────── ──────── ──────── ────────
安全需求评审 → 威胁建模(STRIDE) → 安全编码规范 → SAST扫描 → 渗透测试复查
数据分级 → 攻击面分析 → 代码审查 → DAST扫描 → 基线核查
合规要求 → 安全架构评审 → 依赖检查 → 人工安全测试 → 应急响应预案
关键卡点¶
- PR/MR 合并前:SAST 通过 + 安全 Review(高危功能强制)
- 上线前:中危及以上漏洞清零,或有 Risk Acceptance 记录
- 定期:季度安全基线复查、年度红蓝对抗
八、漏洞管理¶
| 等级 | CVSS | 修复 SLA |
|---|---|---|
| 严重 | 9.0–10.0 | 24小时 |
| 高危 | 7.0–8.9 | 72小时 |
| 中危 | 4.0–6.9 | 14天 |
| 低危 | 0.1–3.9 | 90天 |
- 修复验证:由安全团队复测确认关闭
- 漏洞根因分析:高危以上必须输出 RCA 报告
- 同类漏洞批量排查(One bug, check all)
版本:v1.0 | 适用范围:所有对外服务及内部核心系统 | Owner:安全团队