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。
最后是流程建议:前端框架的安全更新不要拖。这类依赖暴露在公网,升级路径通常也不复杂,拖的收益远小于风险。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。