概述

之前写过跨站请求伪造(CSRF)。相对 CSRF「借浏览器的身份」,服务端请求伪造(SSRF, Server-Side Request Forgery) 是借 服务器自己的身份 去访问资源。

攻击者诱导或控制应用侧发起的请求目标(URL、主机、协议),让服务器:

目标应用只要「能从 URL 拉数据」或「能把数据推到 URL」,就可能中招:网页预览、Webhook、导入远程图片、文档转换、SSO/元数据拉取、监控探测……

和 CSRF 的对比

CSRF SSRF
谁发请求 受害者浏览器 目标服务器
凭什么有权限 浏览器自动带 Cookie 服务器在内网/有角色权限
典型目标 用户态改密、转账 内网服务、元数据、本机

攻击面直觉

攻击者 --> 业务应用(可配置 URL) --> 内网/127.0.0.1/169.254.169.254

常见危险目标:

常见入口

  1. 远程图片/头像拉取
  2. 页面截图、PDF 渲染、Office 预览
  3. Webhook / 回调 URL 测试
  4. 从 URL 导入数据、RSS、字幕
  5. 内部 HTTP 客户端封装不严,参数直接进 host

利用与危害(简)

防护清单

1. 网络层(最有效)

2. 应用层 URL 校验

3. 响应处理

4. 云侧

自查问题

小结

SSRF 的本质是 把服务器的网络位置与身份交给了攻击者指定的目标。修漏洞不只是正则拦 localhost,而是 出站控制 + 严格 URL 策略 + 不回显。和 CSRF 一样,它提醒我们:安全边界不在「我写的业务逻辑」,而在「系统实际能触达哪里」。

相关阅读:跨站请求伪造(CSRF)(若站内路径不同请以标签「安全」检索)。

案例化自检(应用安全)

上线前问开发:

  1. 是否存在「用户输入 URL → 服务端请求」?
  2. 是否跟随重定向?最多几次?
  3. 是否校验解析后的 IP 段?
  4. 响应是否回显给用户?
  5. 出网策略是否默认拒绝?

任一「否」都要有工单。

小结

SSRF 是云时代的常客。把出站与 URL 处理当成统一安全设计,而不是单个接口的临时正则。