You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Puppeteer是否存在SSRF风险?如何防范该漏洞?

Puppeteer SSRF 安全问题的防范措施

确实如你所说,Puppeteer存在SSRF风险,攻击者可通过构造恶意URL,诱导Puppeteer访问内部网络资源或敏感服务。以下是具体的落地防范措施:

  • 严格限制访问范围
    启用请求拦截功能,对每个请求的目标地址做多层校验:

    • 直接拒绝访问私有IP网段(如127.0.0.1、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)
    • 仅允许访问预先定义的可信域名白名单
    • 解析URL时注意处理http://trusted.com@malicious.com这类绕过技巧,提取真实的目标主机名

    示例代码:

    const puppeteer = require('puppeteer');
    const privateIPRegexes = [/^127\./, /^10\./, /^172\.(1[6-9]|2[0-9]|3[0-1])\./, /^192\.168\./];
    
    (async () => {
      const browser = await puppeteer.launch(); // 非必要请勿添加--no-sandbox参数
      const page = await browser.newPage();
      await page.setRequestInterception(true);
    
      page.on('request', req => {
        const url = new URL(req.url());
        const allowedDomains = ['your-trusted-domain.com'];
    
        // 校验协议合法性
        if (!['http:', 'https:'].includes(url.protocol)) {
          req.abort();
          return;
        }
    
        // 拦截私有IP访问
        if (privateIPRegexes.some(re => re.test(url.hostname))) {
          req.abort();
          return;
        }
    
        // 校验域名白名单
        if (!allowedDomains.includes(url.hostname)) {
          req.abort();
          return;
        }
    
        req.continue();
      });
    
      await page.goto('user-provided-url');
      await browser.close();
    })();
    
  • 禁用危险协议
    拦截并拒绝除http、https之外的所有协议请求(如file://、ftp://、gopher://等),这类协议常被用来访问本地文件或触发恶意操作。

  • 跟踪校验跳转请求
    Puppeteer默认会跟随页面跳转,攻击者可能通过跳转绕过初始URL校验。需在跳转触发时重新检查目标地址,确保跳转后的地址也符合安全规则。

  • 禁用不必要的高风险功能

    • 避免使用--no-sandbox、--disable-setuid-sandbox等弱化沙箱的启动参数,沙箱是隔离恶意页面操作的核心防线
    • 通过--disable-features=NetworkService、--disable-extensions等参数禁用非必要浏览器特性,缩小攻击面
  • 严格预处理输入URL
    对用户提供的URL做标准化处理:

    • 解析并格式化URL,去除多余特殊字符
    • 直接拒绝包含javascript:伪协议、短链接跳转等特殊逻辑的URL
  • 定期更新Puppeteer版本
    Puppeteer团队会持续修复已知安全漏洞,及时更新到最新稳定版能有效降低被利用的风险。

内容的提问来源于stack exchange,提问作者dbain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:06:27