1. 点击劫持 (Clickjacking)
1.1 什么是点击劫持?
点击劫持是一种视觉欺骗攻击,攻击者使用透明的iframe覆盖在一个看似正常的网页上,诱导用户点击实际上是隐藏iframe中的恶意内容。
1.2 攻击示例
CodeBlock Loading...
1.3 防护策略
1.3.1 X-Frame-Options头
CodeBlock Loading...
X-Frame-Options选项:
DENY: 完全禁止被嵌入iframeSAMEORIGIN: 只允许同源页面嵌入
1.3.2 CSP frame-ancestors指令
更现代和灵活的方法:
CodeBlock Loading...
1.3.3 JavaScript防御(Frame Busting)
CodeBlock Loading...
注意: JavaScript防御可能被绕过,应配合服务器端头部使用。
1.3.4 完整的安全头实现
CodeBlock Loading...
1.4 点击劫持防护总结
防护清单:
- ✅ 设置X-Frame-Options头
- ✅ 使用CSP frame-ancestors指令
- ✅ 实施JavaScript frame busting(辅助手段)
- ✅ 对敏感操作要求用户重新认证
2. 文件上传漏洞 (File Upload Vulnerabilities)
2.1 文件上传的风险
不安全的文件上传可能导致:
- 💣 远程代码执行(上传恶意脚本)
- 🗄️ 目录遍历(覆盖系统文件)
- 🦠 病毒传播
- 💾 拒绝服务(上传超大文件耗尽存储)
- 🎭 钓鱼攻击(上传伪造页面)
2.2 攻击示例
CodeBlock Loading...
2.3 防护策略
2.3.1 文件类型验证
CodeBlock Loading...
2.3.2 文件大小限制
CodeBlock Loading...
2.3.3 安全的文件名处理
CodeBlock Loading...
2.3.4 安全的文件存储
CodeBlock Loading...
2.3.5 安全的文件下载
CodeBlock Loading...
2.3.6 病毒扫描集成
CodeBlock Loading...
2.4 文件上传防护总结
安全上传清单:
- ✅ 验证文件类型(扩展名和MIME类型)
- ✅ 限制文件大小
- ✅ 使用安全的随机文件名
- ✅ 将文件存储在Web根目录之外
- ✅ 设置正确的文件权限(不可执行)
- ✅ 实施病毒扫描
- ✅ 验证图片文件的完整性
- ✅ 限制上传频率(防止滥用)
3. 服务端请求伪造 (SSRF)
3.1 什么是SSRF?
SSRF (Server-Side Request Forgery) 是一种安全漏洞,攻击者诱导服务器向攻击者指定的目标发起请求,从而访问内部资源或执行未授权操作。
3.2 攻击场景
CodeBlock Loading...
3.3 防护策略
3.3.1 URL白名单
CodeBlock Loading...
3.3.2 IP黑名单
CodeBlock Loading...
3.3.3 禁用不必要的协议
CodeBlock Loading...
3.3.4 使用专用的HTTP客户端
CodeBlock Loading...
3.4 SSRF防护总结
SSRF防护清单:
- ✅ 实施严格的URL白名单
- ✅ 阻止访问内部IP地址和私有网络
- ✅ 禁用危险协议(file://, gopher://, dict://等)
- ✅ 禁止跟随重定向或严格验证重定向目标
- ✅ 使用专用HTTP客户端并设置超时
- ✅ 限制响应大小防止DoS
- ✅ 记录所有外部请求并监控异常
4. 不安全的反序列化
4.1 什么是反序列化?
序列化: 将对象转换为字节流以便存储或传输 反序列化: 将字节流还原为对象
当应用程序接受来自不可信源的序列化数据并进行反序列化时,如果没有适当验证,可能导致远程代码执行。
4.2 防护策略
4.2.1 避免反序列化不可信数据
CodeBlock Loading...
4.2.2 实施完整性检查
CodeBlock Loading...
4.3 反序列化防护总结
防护清单:
- ✅ 避免反序列化来自不可信源的数据
- ✅ 优先使用JSON等安全格式,避免二进制序列化
- ✅ 实施数字签名验证数据完整性
- ✅ 使用类型白名单限制可反序列化的类型
- ✅ 在反序列化后进行严格的数据验证
- ✅ 以最小权限运行应用程序
总结
本文覆盖了四种重要的高级Web安全威胁及其防护策略:
核心防护要点:
| 攻击类型 | 关键防护措施 |
|---|---|
| 点击劫持 | X-Frame-Options、CSP frame-ancestors |
| 文件上传漏洞 | 类型验证、大小限制、安全存储、病毒扫描 |
| SSRF攻击 | URL白名单、IP黑名单、禁用危险协议 |
| 不安全反序列化 | JSON优先、签名验证、输入验证 |
通用安全原则:
- 纵深防御 - 多层安全控制
- 最小权限 - 只授予必需权限
- 输入验证 - 永不信任用户输入
- 白名单优于黑名单
- 定期安全审计和测试