第1章:安全基础(Security Foundations)
一、导读
1.1 本章学习目标
第1章建立安全思维的基础框架。安全不是事后补丁,而是设计决策。
本章的核心学习目标包括:
- 理解安全三角:机密性、完整性、可用性
- 掌握威胁建模的基本方法
- 理解攻击面的概念
- 学会纵深防御策略
1.2 为什么本章如此重要
大多数安全漏洞不是技术缺陷,而是设计缺陷。在编码阶段才考虑安全,往往为时已晚。本章教你如何在设计阶段就把安全融入架构。
1.3 核心问题引导
安全的三个核心目标是什么?它们之间如何权衡?
威胁建模能帮你发现什么?
什么是攻击面?如何最小化它?
纵深防御为什么比单点防御更有效?
二、核心概念详解
2.1 安全三角(CIA Triad)
机密性(Confidentiality)
/ \
/ \
完整性(Integrity)--- 可用性(Availability)
机密性:只有授权用户能访问数据
完整性:数据不被未授权修改
可用性:授权用户能正常访问2.2 威胁建模
STRIDE 威胁分类:
- Spoofing(仿冒):冒充他人身份
- Tampering(篡改):未授权修改数据
- Repudiation(抵赖):否认执行过操作
- Information Disclosure(信息泄露):暴露敏感信息
- Denial of Service(拒绝服务):使服务不可用
- Elevation of Privilege(权限提升):获取未授权的权限2.3 攻击面最小化
java
// 不好的设计:暴露过多接口
public class UserService {
public void deleteUser(String userId) { /* ... */ }
public void updateUser(String userId, Map<String, Object> fields) { /* ... */ }
public List<User> getAllUsers() { /* ... */ }
}
// 好的设计:最小化攻击面
public class UserService {
// 只暴露必要的操作
public void deactivateUser(String userId, AuthContext auth) { /* ... */ }
public void updateUserName(String userId, String newName, AuthContext auth) { /* ... */ }
}2.4 纵深防御
层1: 网络防火墙
层2: Web 应用防火墙(WAF)
层3: 输入验证
层4: 业务逻辑验证
层5: 数据库约束
层6: 加密存储
每一层都是独立的防线,攻击者必须突破所有层才能成功三、实战案例
3.1 案例一:威胁建模练习
系统:在线支付系统
资产:用户信用卡信息、交易记录
威胁分析:
1. 仿冒:攻击者冒充用户进行支付
→ 对策:多因素认证
2. 篡改:攻击者修改支付金额
→ 对策:数字签名、端到端加密
3. 信息泄露:信用卡号被窃取
→ 对策:PCI DSS 合规、Token 化存储
4. 拒绝服务:系统被 DDoS 攻击
→ 对策:限流、CDN、弹性扩展四、本章小结
安全三角:机密性、完整性、可用性的平衡。
威胁建模:系统性地识别和评估安全威胁。
攻击面最小化:减少暴露的接口和数据。
纵深防御:多层独立的安全防线。
五、思考与练习
对一个你熟悉的系统进行威胁建模。
安全三角的三个目标之间如何权衡?举例说明。
设计一个纵深防御方案来保护用户密码。