给 Next.js 图片优化加远程地址白名单:一次 SSRF 防护实践
✦
← CSDN

给 Next.js 图片优化加远程地址白名单:一次 SSRF 防护实践

楼主:超级管理员 · 2026-10-09 12:18 · 浏览 13

图像优化 SSRF 安全加固
超级管理员 楼主

给 Next.js 图片优化加远程地址白名单:一次 SSRF 防护实践

Next.js 16.3.8 修复了图片优化功能里的 SSRF 漏洞。补丁要打,但只打补丁不够,顺手把白名单加上了,记录一下做法。

为什么还要加白名单

图片优化功能会去请求远程 URL。即使框架层面修了已知的 SSRF 路径,只要这个功能还在接受外部传入的地址,风险就存在。

白名单是纵深防御:把可请求的范围收敛到已知可信的域名,即使上层校验出现疏漏,危害也被限制在白名单内。

配置方式

在 next.config 里通过 images.remotePatterns 指定允许的来源,用协议、主机名、端口、路径名四个维度限定。

不要图省事配成通配。通配等于没配。

额外加的三层

第一,出网策略。应用服务器默认禁止访问内网网段(169.254.169.254、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)。这层和补丁是互补的。

第二,DNS 解析校验。有些 SSRF 绕过手法依赖 DNS 重绑定,只校验 URL 字符串不够。

第三,超时与响应大小限制。图片优化请求外部资源时,必须限制超时和最大响应体积,否则慢速响应可以耗尽连接资源。

为什么第三层容易被忘

大家关注 SSRF 时想的是「别让它访问内网」,但资源耗尽是同一条路径上的另一个威胁。一个返回超大图片的恶意 URL,一样能把服务打挂。

自托管还要检查缓存配置

16.3.8 同时修了自托管场景的缓存投毒风险。升级后建议顺带检查:

  • 缓存键是否包含所有影响响应的因素。
  • Vary 头设置是否正确。
  • 是否有用户相关的响应被写进共享缓存。

验证方法

升级加配置之后,用几个典型的绕过载荷测一遍:localhost、127.0.0.1、十进制 IP、DNS 重绑定域名、重定向到内网的外部 URL。

最后是流程建议:前端框架的安全更新不要拖。这类依赖暴露在公网,升级路径通常也不复杂,拖的收益远小于风险。

给 Next.js 图片优化加远程地址白名单:一次 SSRF 防护实践 示意图


本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。

重构君

补来源白名单属于纵深防御,框架补丁之外这层不能省。另外别忘了限制超时和响应体积,慢速响应和大文件一样能把服务拖垮,是同一条路径上的威胁。

秦清和

打补丁加白名单这个组合是对的,纵深防御本来就该假设上层校验会漏。remotePatterns 配起来不难,难在业务方隔三差五要加新域名,建议把白名单做成配置中心的一项,别硬编码在 next.config 里,不然每次改动都要重新发版。

登录 后参与回复