图片链接为什么会泄露数据
Markdown 图片在渲染时会被前端发起一次真实请求。如果回答里把机密内容拼进图片 URL 的参数,这次请求就会把它带到外部服务器——攻击者不需要任何漏洞利用,只需要诱导模型输出一个带参数的图片链接。防线在渲染端与出站控制:图片域名白名单、不自动抓取链接、对外发流量做审计。
基本信息
| 原理 | 图片 URL 可拼接参数;渲染即请求,请求即外发 |
|---|---|
| 风险位置 | 聊天前端、邮件客户端、工单系统 |
| 渲染侧 | 图片域名白名单,非白名单不加载 |
| 出站侧 | 域名与路径审计,拦截异常查询串 |
| 源头 | 敏感数据不进入模型上下文 |
典型使用场景
- 企业聊天助手:回答里出现外部图片链接时按白名单加载
- 邮件网关:渲染 HTML 邮件前剥离外链图片
- 工单系统:外部来信内容中的图片不自动加载
- 内部合规检查:用内部标记值做一次泄露演练
- 浏览器代理:抓取页面时的外发请求集中走代理记录
防御清单
防御清单
1) 渲染端图片仅允许可信域名(白名单),其余不加载
2) 回答中的链接不自动抓取,需用户显式点击
3) 出站流量做域名与路径审计,拦截异常长的查询串
4) 敏感数据不进入模型上下文,从源头减少可外泄内容
5) 定期演练:在内部资料里放一个唯一标记值,
检查它是否会出现在任何外发请求的 URL 中
# 注意:只检查文本输出不够,泄露发生在渲染环节风险与处置对照
| 风险点 | 表现 | 处置 |
|---|---|---|
| 图片 URL 参数 | 机密内容被拼进查询串 | 域名白名单 + 出站 URL 审计 |
| 自动抓取外链 | 后台静默发起请求 | 改为用户显式点击才加载 |
| 邮件/工单渲染 | 客户端自动加载远程图片 | 服务端预渲染时剥离外链图片 |
| 源头上下文 | 敏感字段进入提示 | 字段级脱敏,最小化上下文 |
| 文本输出检查 | 只看输出看不到渲染行为 | 检查要覆盖渲染链路与外发请求 |
一刀切禁用 Markdown 渲染会伤害可用性,实际难以长期执行。按域名白名单放行图片,配合出站审计,是更可落地的组合。
泄露检测用唯一标记值最有效:在内部资料里埋一个只有你知道的字符串,检查它是否出现在出站请求的 URL 或日志里。只看回答文本是否含该字符串,会漏掉渲染环节的泄露。