【网安干货】--调用外部链接如何防御风险

前几个月我又到了一家安全领域比较有实力的公司实习,初来上海,很多事情要协调适应,还发现了一款超好用的笔记软件Obsidian(后面也出一期如何使用这个笔记软件),忙着从零构建那个本地笔记而暂时搁置了博客。最近对于实习期的工作已经开始游刃有余了,于是腾出一些时间,开始去思考SDL的建设,哈哈,也不知道算不算重回计算机梦的开始------软件开发方向。


这篇文章的创作思路是:

思考常见打点方式ing------>

想到文件上传与ssrf同时满足的条件------>

调取外部链接------>

思考如何去防御------>

结合ai网上学习搜索然后总结

一、明晰全部危害

核心风险点归类

  1. 服务端请求伪造 SSRF
  2. 恶意图片 / 伪装文件上传
  3. 内网探测、云元数据泄露
  4. 恶意外链钓鱼、恶意资源加载

二、完整梳理版

1. 业务场景

系统头像功能支持两种方式:

  • 用户本地上传头像
  • 用户输入外部 URL 链接,服务器拉取远程图片作为头像

2. 存在安全风险

  1. SSRF 漏洞:攻击者构造恶意 URL,让服务器访问内网地址、云元数据接口,探测内网服务、读取敏感信息。
  2. 内网端口扫描:遍历内网 IP + 端口,爆破 Redis、MySQL、SSH 等高危服务。
  3. 恶意文件伪装:伪装成图片的木马、脚本、HTML 钓鱼页面,被服务器下载存储。
  4. DNS 重绑定、IP 畸形绕过:绕过简单黑名单,解析到内网 IP。
  5. 重定向绕过:利用 301/302 跳转从公网跳转到内网。
  6. 超大文件 DoS、慢请求消耗服务器资源。

3. 整体防护架构分层

应用层校验 + 服务端中转拉取 + 沙箱隔离下载 + 安全对象存储 + 前端约束


三、解决方案

1. URL 基础严格校验(应用层)

  1. 协议白名单 :仅允许 http/https,拦截 filegopherdictftp 等高危协议。
  2. 端口白名单 :只放行 80443,拦截 22、3306、6379、8080 等敏感端口。
  3. 禁用自动重定向:关闭 3xx 自动跟随,防止跳转内网。
  4. 请求限制:超时 3~5 秒,限制单文件最大体积(如 5MB),防 DoS 和大文件攻击。

2. 域名与 IP 安全校验(防 SSRF 核心)

  1. 解析域名拿到真实 IP,不做简单字符串匹配。

  2. 拉黑禁止网段:

    • 回环:127.0.0.0/8
    • 内网:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16
    • 云元数据:169.254.169.254、阿里云 100.100.x.x
  3. 封堵 IP 畸形格式、DNS 重绑定:解析一次固化 IP,不再二次解析

3. 沙箱隔离下载

  1. 不直接在业务主服务器请求外部 URL;

  2. 独立部署安全沙箱节点 / 隔离容器做远程拉取;

  3. 沙箱特点:

    • 无内网访问权限、仅可出公网 80/443
    • 网络隔离、无业务敏感权限
    • 下载环境只读、无持久化权限
  4. 作用:

    即便被绕过、被恶意利用,也只能在沙箱内生效,无法渗透内网、无法攻陷业务主机

4. 文件内容双重校验

  1. 校验 HTTP 响应头 Content-Type 仅为合法图片类型;
  2. 校验文件魔术字(文件头),防止后缀伪装、脚本伪装图片;
  3. 不符合直接丢弃、拦截保存。

5. 安全存储与资源管理

  1. 下载后不存业务本地 ,统一转存 OSS 对象存储
  2. 服务端随机重命名文件名,禁止用户可控路径,防止路径遍历、文件覆盖;
  3. OSS 资源设置临时签名 URL、时效访问,防盗链、防恶意分发。

6. 前端辅助防护

  1. 前端正则先校验 URL 格式和协议,提前拦截非法输入;
  2. 前端不直接请求用户外链,全部走后端中转接口
  3. 图片响应头配置 referrer-policy,防止内网信息泄露。

四、标准业务流程

用户输入头像(本地上传 / 外部 URL)

→ 应用层协议、端口、URL 格式校验

→ 解析 IP,拦截内网 / 回环 / 元数据地址

→ 交由独立沙箱环境安全拉取远程资源 //实在不行了才考虑

→ 校验响应类型 + 图片文件头合法性

→ 随机重命名,上传 OSS 对象存储

→ 前端返回 OSS 安全签名地址展示

→ 全程禁止前端直连用户外链、禁止服务器直连内网


五、总结

在渗透测试的常见打点场景中,"外部 URL 头像拉取" 是一个极易被忽视却风险极高的功能点 ------ 它同时叠加了SSRF 服务端请求伪造文件上传漏洞 的双重威胁,而一般可能只注意到了文件上传(也可能是我菜的原因哈哈)。

我感觉这个功能的核心风险在于 "服务器主动发起外网请求" :攻击者可通过构造恶意 URL触发 SSRF 探测内网资产窃取云元数据;也可伪装恶意文件让服务器下载落地,形成变相文件上传;再配合 DNS 重绑定30X 重定向等绕过手段,进一步放大攻击面,甚至引发服务器资源耗尽、违规内容传播等问题。​

针对这类 "双重风险叠加" 的场景,防御 能只靠单一规则,而需构建 "分层拦截 + 隔离防护" 的完整体系:从应用层的 URL 协议 / 端口白名单校验,到 IP 真实解析与风险网段拉黑,再到独立沙箱隔离远程拉取请求,最后通过文件双重校验、OSS 安全存储形成闭环。整个防护流程的核心思路是 "最小权限 + 风险隔离"------ 既严格限制外部请求的范围与权限,又通过沙箱、对象存储等手段切断攻击链路,避免恶意行为渗透到核心业务环境。​

值得注意的是,本地上传外部 URL 拉取需分开防护:前者侧重后缀白名单、目录禁用脚本执行;后者聚焦 SSRF 拦截与远程资源安全校验。只有兼顾两类模式的风险特点,才能让头像上传功能既保留用户体验,又彻底堵死安全漏洞

任何 "服务器代用户发起请求""远程拉取资源" 的场景,都必须警惕 SSRF 与文件上传的叠加风险,通过 "源头校验 + 中间隔离 + 末端防护" 的三层架构,才能从根本上守住安全防线。

相关推荐
weixin_604236671 天前
华为企业级路由器完整版实战配置
网络·安全·华为·智能路由器·华为交换机命令·华为路由器
vortex51 天前
在 Yakit 浏览器中添加本地插件的两种方法
网络安全·yakit
这是谁的博客?1 天前
AI 安全入门:从环境搭建到风险防护实战
人工智能·安全
鼎讯信通1 天前
低噪 + 双源 + 全频段|OM 频谱分析仪守护能源场站电磁安全监测
安全·能源·信息与通信
ishangy1 天前
智慧港口中皮带跑偏AI检测技术如何提升运输安全?
人工智能·安全·ai视觉解决方案·智慧港口·ai视觉监控·皮带跑偏识别
程思扬1 天前
Android 大厂编码规范
android·网络·安全·开源·流程图
m0_738120721 天前
渗透测试基础——一文详解CORS跨域劫持漏洞原理与利用
服务器·网络·安全·web安全·网络安全
YanDDDeat1 天前
MySQL性能排查,慢查询导致CPU飙高的完整记录
mysql·安全·性能优化
深圳市机智人激光雷达1 天前
技术筑牢安全冗余:激光雷达在自动驾驶高阶感知中的底层价值与范式演进
人工智能·安全·机器学习·3d·机器人·自动驾驶·无人机
TechWayfarer1 天前
IP风险等级评估接入实战:金融信贷如何用IP画像辅助风控审核
python·tcp/ip·安全·金融