1️⃣ 失效的访问控制(Broken Access Control)
-
核心问题:用户能访问本应被禁止的资源或操作
-
攻击案例:
-
修改URL参数:
https://shop.com/order?user_id=100
→ 改为user_id=101
查看他人订单 -
直接访问管理员页面:
https://site.com/admin
(普通用户未鉴权)
-
-
防御方案:
python# 代码示例:检查当前用户是否拥有权限 if current_user != requested_user_id: raise PermissionDenied("无权访问!") # 强制权限验证
-
学习工具:Burp Suite 修改HTTP请求练习越权漏洞
2️⃣ 加密机制失效(Cryptographic Failures)
-
核心问题:敏感数据未加密或加密方式不安全
-
攻击案例:
-
数据库泄露后,密码明文暴露(如"password123"直接可被使用)
-
HTTP传输信用卡号被中间人窃取
-
-
防御方案:
-
传输层:强制HTTPS(HSTS头部)
-
存储层:密码使用 bcrypt 哈希(非MD5/SHA1)
-
-
学习工具:Wireshark抓包观察HTTP明文数据
3️⃣ 注入攻击(Injection)
-
核心问题:用户输入被当作代码执行
-
攻击案例:
-
SQL注入 :输入
' OR 1=1 --
绕过登录验证 -
命令注入 :
; rm -rf /
删除服务器文件
-
-
防御方案:
java
// 使用预编译语句(PreparedStatement)防SQL注入
String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, userInput); // 安全!输入会被当作数据而非代码
- 学习工具:SQLMap自动化检测注入漏洞
4️⃣ 不安全设计(Insecure Design)
-
核心问题:架构设计阶段缺乏安全考量
-
攻击案例:
-
密码重置流程未验证邮箱所有权 → 攻击者重置任意用户密码
-
支付系统未防重放攻击 → 重复扣款
-
-
防御方案:
-
设计阶段进行 威胁建模(Threat Modeling)
-
关键流程添加业务逻辑校验(如短信验证码确认身份)
-
5️⃣ 安全配置错误(Security Misconfiguration)
-
核心问题:服务器/组件使用不安全配置
-
攻击案例:
-
服务器开启调试模式 → 暴露代码栈轨迹
-
云存储桶权限配置为公开 → 数十万用户数据泄露
-
-
防御方案:
-
禁用不必要服务(如FTP、旧版SSL)
-
自动化扫描工具:OWASP ZAP
-
6️⃣ 有风险的过时组件(Vulnerable and Outdated Components)
-
核心问题:使用含已知漏洞的第三方库
-
攻击案例:
- Log4j漏洞(CVE-2021-44228):攻击者注入恶意代码远程控制服务器
-
防御方案:
-
定期扫描依赖:OWASP Dependency-Check
-
仅从官方仓库下载组件(如Maven Central、npmjs)
-
7️⃣ 身份认证失效(Identification and Authentication Failures)
-
核心问题:用户身份验证机制存在缺陷
-
攻击案例:
-
暴力破解弱密码(如
admin/password
) -
会话令牌未失效 → 用户注销后令牌仍可用
-
-
防御方案:
- 多因素认证(MFA):强制短信/验证器APP二次验证
-
学习工具:Burp Suite Intruder模块模拟密码爆破
8️⃣ 软件和数据完整性失效(Software and Data Integrity Failures)
-
核心问题:未验证代码/数据的来源和完整性
-
攻击案例:
-
下载被篡改的软件安装包(植入后门)
-
自动更新机制未签名 → 攻击者推送恶意更新
-
-
防御方案:
-
使用 数字签名(如GPG签名验证)
-
关键数据存储哈希值:
-
9️⃣ 安全日志与监控不足(Security Logging and Monitoring Failures)
-
核心问题:未记录攻击痕迹 → 无法快速响应入侵
-
攻击案例:
-
黑客拖库10小时才被发现(日志未记录异常查询)
-
登录失败1000次无报警 → 导致暴力破解成功
-
-
防御方案:
-
记录关键事件:
-
搭建 ELK日志系统(Elasticsearch+Logstash+Kibana)
-
-
工具推荐 :开源SIEM工具 Wazuh
🔟 服务端请求伪造(SSRF)
-
核心问题:诱骗服务器访问内部资源
-
攻击案例:
-
利用天气查询API参数攻击内网:
javaGET /api?url=http://internal-db/admin # 服务器访问了内部数据库
-
-
防御方案:
-
禁止服务器向内部网络发起请求
-
校验用户输入的URL:
-