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

前几个月我又到了一家安全领域比较有实力的公司实习,初来上海,很多事情要协调适应,还发现了一款超好用的笔记软件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 与文件上传的叠加风险,通过 "源头校验 + 中间隔离 + 末端防护" 的三层架构,才能从根本上守住安全防线。

相关推荐
txg66612 小时前
HgtJIT:基于异构图 Transformer 的即时漏洞检测框架
人工智能·深度学习·安全·transformer
zyl8372115 小时前
前端开发网络安全注意事项
安全·web安全
OpenAnolis小助手15 小时前
Anolis OS Linux Dirty Frag 漏洞安全声明
linux·安全·web安全·龙蜥社区
tingting011916 小时前
敏感目录扫描及响应码
安全
智慧医养结合软件开源17 小时前
规范新增·精准赋能,凝聚志愿力量守护老人安康
大数据·安全·百度·微信·云计算
KKKlucifer19 小时前
数字安全浪潮下国产数据安全企业发展图鉴
大数据·安全
淼淼爱喝水19 小时前
Pikachu 靶场 RCE 模块乱码问题解决方法
网络·安全·pikachu
紫墨丹青19 小时前
贝锐向日葵IP和域名
网络·tcp/ip·网络安全·远程工作
hahaha 1hhh19 小时前
用SSH 建立了一个本地端口转发隧道,用于安全地访问远程服务器上的服务,后台运行。autodl
服务器·安全·ssh