跳转至

研发安全基线标准

一、代码安全

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: DENYCSPX-Content-Type-Options: nosniff

五、依赖与供应链

  • 第三方组件:上线前必须通过 SCA 扫描(Snyk / OWASP Dependency-Check)
  • 禁止引入 EOL(End of Life)组件
  • 锁定依赖版本(package-lock.json / requirements.txt pinned)
  • 镜像基础层:每月更新 + 漏洞扫描(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:安全团队