安全设计Checklist (Security Design Checklist)
分类: SDL规范文档 · 阅读时间: 约10分钟 · 最后更新: 2026-04-08

1. 概述

安全设计Checklist是在系统架构设计阶段使用的结构化审查工具。其目的是确保设计方案在进入编码阶段前已充分考虑安全因素, 避免因架构级缺陷导致后期高成本的返工。本Checklist覆盖认证、授权、输入验证、密码学、错误处理、日志审计和会话管理七个核心安全域。

使用方式
设计评审会议中, 安全评审员应逐项检查以下Checklist。每个检查项标记为"通过"、"不适用"或"需整改", 整改项需在编码开始前完成闭环。

2. 认证 (Authentication)

编号检查项说明
AUTH-01是否采用标准认证协议优先使用 OAuth 2.0 / OpenID Connect, 避免自研认证协议
AUTH-02密码策略是否合理最低长度8位, 支持 MFA, 禁止明文存储, 使用 bcrypt/scrypt/Argon2
AUTH-03是否支持多因素认证高风险操作 (如支付、权限变更) 必须要求 MFA
AUTH-04暴力破解防护实现账户锁定策略或渐进式延迟, 配合 CAPTCHA
AUTH-05凭据传输安全认证凭据必须通过 TLS 加密信道传输, 禁止 URL 参数传递
AUTH-06密码重置流程安全使用一次性 Token + 有效期限制, 重置后使旧会话失效

3. 授权 (Authorization)

编号检查项说明
AUTHZ-01是否实施最小权限原则用户和服务账号仅授予完成其职能所需的最小权限集
AUTHZ-02访问控制模型是否明确明确采用 RBAC、ABAC 或 PBAC, 并文档化权限矩阵
AUTHZ-03是否存在水平越权风险用户不能访问同级别其他用户的资源, 需服务端校验资源归属
AUTHZ-04是否存在垂直越权风险普通用户不能执行管理员操作, 接口层需独立校验角色
AUTHZ-05API授权粒度每个 API Endpoint 必须有独立的权限校验, 不依赖前端控制

4. 输入验证 (Input Validation)

编号检查项说明
IV-01是否在服务端执行输入验证客户端验证仅用于用户体验, 安全验证必须在服务端实施
IV-02是否采用白名单验证策略优先定义允许的输入模式, 而非尝试过滤恶意输入
IV-03SQL注入防护使用参数化查询 (Prepared Statement), 禁止字符串拼接SQL
IV-04XSS防护输出编码 (Output Encoding) 与 Content Security Policy 结合使用
IV-05文件上传安全校验文件类型 (Magic Number, 非仅扩展名)、大小限制、存储隔离
IV-06反序列化安全避免对不可信数据进行反序列化, 若必须则使用白名单类过滤

5. 密码学 (Cryptography)

编号检查项说明
CRYPTO-01是否使用标准加密算法对称: AES-256-GCM; 非对称: RSA-2048+/ECDSA P-256+; 散列: SHA-256+
CRYPTO-02密钥管理方案使用 KMS (如 AWS KMS, HashiCorp Vault), 禁止硬编码密钥
CRYPTO-03TLS配置最低 TLS 1.2, 推荐 TLS 1.3, 禁用不安全的密码套件
CRYPTO-04敏感数据存储加密PII、支付信息等敏感数据必须加密存储, 区分 Encryption at Rest 和 In Transit
CRYPTO-05随机数生成安全相关场景必须使用 CSPRNG (如 SecureRandom), 禁止使用 Math.random()

6. 错误处理 (Error Handling)

编号检查项说明
ERR-01错误信息是否安全面向用户的错误信息不应泄露技术细节 (如堆栈跟踪、SQL语句、内部路径)
ERR-02全局异常处理实现全局异常处理器, 确保未捕获异常不会返回原始错误信息
ERR-03失败安全 (Fail Secure)系统异常时默认拒绝访问, 而非默认允许
ERR-04错误日志分离详细错误信息写入安全日志 (仅运维可访问), 用户仅看到友好提示

7. 日志与审计 (Logging & Auditing)

编号检查项说明
LOG-01安全事件是否记录认证成功/失败、授权失败、输入验证失败、关键业务操作必须记录
LOG-02日志内容安全日志中禁止记录密码、Token、信用卡号等敏感信息
LOG-03日志防篡改日志应存储在独立系统中, 应用进程仅有追加权限
LOG-04日志保留策略根据合规要求确定保留期限, 通常不少于6个月

8. 会话管理 (Session Management)

编号检查项说明
SESS-01Session ID强度使用足够长度 (128 bit+) 和熵的随机值, 由框架自动生成
SESS-02会话超时设定合理的绝对超时和空闲超时, 高敏感操作使用短时会话
SESS-03Cookie安全属性设置 Secure、HttpOnly、SameSite 属性, 限定 Path 和 Domain
SESS-04会话固定攻击防护认证成功后必须重新生成 Session ID
SESS-05并发会话控制根据业务需求限制同一账户的并发会话数
注意
Checklist不能替代深入的威胁建模。对于复杂系统, 应在完成Checklist审查后, 进一步执行结构化的威胁建模分析 (参见"威胁建模"章节)。
李明 (Li Ming)
Security Architecture Reviewer
资深安全架构评审专家, 专注于安全设计评审方法论研究。曾参与多个金融和政务系统的安全架构评审, 在安全设计模式和反模式方面有深入的实践积累。