高级 #security#sdlc#ssdlc

安全开发生命周期(SSDLC)

SSDLC 把安全融入软件开发的每个阶段——需求阶段做威胁建模、设计阶段做安全设计评审、编码阶段遵守安全规范、测试阶段做安全测试、运维阶段持续监控

🔧 “安全不是加功能,是改流程”

很多团队的做法:先写代码 → 上线前找安全团队”扫一下” → 发现一堆漏洞 → 延期上线修复。

这是错的——安全的理念应该从需求阶段就融入开发流程,而不是最后加一道”安检”。

SSDLC(Secure Software Development Lifecycle,安全开发生命周期) 就是把”安全”植入软件开发的每一个阶段。

🏪 **类比:盖房子”

不安全的方式:房子盖完了再检查——“承重墙不够结实,拆了重砌”

SSDLC 的方式:打地基时就考虑防震(需求阶段)、设计图纸时标注承重要求(设计阶段)、施工时用合格材料(编码阶段)、验收时做承重测试(测试阶段)


📋 SSDLC 各阶段

阶段安全活动问题:如果不做
需求威胁建模、安全需求定义上线了才发现安全需求没考虑
设计安全架构评审、攻击面分析架构缺陷后期极难修复
编码安全编码规范、静态代码扫描漏洞被引入代码库
测试渗透测试、SAST/DAST漏洞被带到生产环境
部署安全配置、密钥管理默认配置泄露敏感信息
运维漏洞扫描、事件响应被攻击了才发现

🔍 威胁建模——“做个黑客”提前想攻击路径

威胁建模是 SSDLC 需求阶段最关键的活动——在写代码之前,站在攻击者角度思考”怎么攻击这个系统”

最常用的威胁建模框架——STRIDE(微软提出):

Spofing(伪装)— 冒充他人身份
Tampering(篡改)— 修改数据
Repudiation(否认)— 否认自己做过的事
Information Disclosure(信息泄露)— 暴露敏感信息
Denial of Service(拒绝服务)— 让系统不可用
Elevation of Privilege(权限提升)— 获得更高权限

对每个组件,问自己”这个组件会不会被 STRIDE 中的哪种方式攻击?“

安全测试

方法含义工具举例
SAST(静态分析)扫描源代码找漏洞SonarQube、ESLint 安全规则
DAST(动态分析)运行中扫描应用OWASP ZAP、Burp Suite
渗透测试人工模拟攻击专业安全测试员
依赖扫描检查第三方库是否已知漏洞npm audit、Trivy
# npm 依赖安全扫描
npm audit                    # 检查依赖中的已知漏洞
npm audit fix                # 自动修复可修复的漏洞

# OWASP ZAP——DAST 工具
# 自动扫描 Web 应用,检测 SQL 注入、XSS 等

📝 小结

概念一句话
SSDLC安全融入全生命周期——从需求到运维
威胁建模提前想”攻击者会怎么搞这个系统”
STRIDE六类威胁的框架——伪装/篡改/否认/泄露/拒绝/提权
SAST静态度量扫描源代码
DAST动态运行中扫描应用
渗透测试人工安全测试——模拟真实攻击

为什么先学这个? SSDLC 是”主动防御”——在被攻击前就防范。但如果已经被攻击了怎么办?——数字取证