XSS漏洞分析:Content-Disposition头注入导致的反射型XSS
PHP脚本未过滤用户可控token参数,直接拼入Content-Disposition响应头,引发HTTP头注入,可导致反射型XSS。修复需三重防御:白名单输入验证、rawurlencode输出编码、强制设置Content-Type与X-Content-Type-Options安全响应头。
该PHP脚本未对用户可控的token参数做任何过滤或编码,直接拼入Content-Disposition响应头中,可被利用构造恶意文件名实现HTTP头注入,进而触发浏览器解析上下文中的XSS。
这个PHP脚本的问题非常典型——直接把用户传入的token参数拼到了Content-Disposition响应头里,没做任何过滤或编码。结果就是,攻击者可以构造一个恶意文件名,利用HTTP头注入触发浏览器解析上下文中的XSS。这可不是传统HTML上下文里的反射型XSS,而是由HTTP头注入引发的XSS,隐蔽性更强。
问题代码长这样:
$input = $_GET['token'];
$input = str_replace(array("\r\n", "\n"), '', $input); // 仅过滤换行和空字节,防护严重不足
header("Content-Disposition: attachment; filename='$input'");
注意看,代码虽然干掉了换行符和空字节,但回车符、单引号、双引号、分号这些关键字符一个都没防。攻击者可以通过注入CRLF字符实现响应头分裂(CRLF Injection),进而注入任意HTTP头,比如Content-Type、X-XSS-Protection,甚至直接操控后续响应体的内容。
更隐蔽也更容易被忽视的利用路径是:利用浏览器对Content-Disposition中畸形filename值的不一致解析。举个例子,当请求如下:
GET /test/2.php?token='">
服务器返回的响应头会变成:
Content-Disposition: attachment; filename=''">'
服务端虽然声明了attachment,但如果用户手动取消下载,或者浏览器因为MIME类型推测失败(特别是响应没有明确Content-Type: application/octet-stream时),就可能选择直接渲染响应体。这时候,就会被当作HTML执行——这正是Security StackExchange上讨论的Content-Disposition XSS场景的核心风险。
✅ 正确的修复思路:三重防御,缺一不可
- 输入验证:用白名单限制token只能包含字母、数字和下划线,长度不超过64位;
- 输出编码:对filename值使用
rawurlencode()(符合RFC 5987标准),或者用addcslashes($input, '"\')加双引号包裹; - 强制安全响应头:添加
Content-Type: application/octet-stream和X-Content-Type-Options: nosniff,杜绝浏览器自作主张地渲染。
加固后的代码示例:
⚠️ 关键提醒:光靠过滤换行符远远不够,依赖客户端行为(比如“用户是否点击保存”)的防御根本不可靠。所有用户输入只要进入HTTP头,就必须严格转义或编码——这是底线。
Adobe Acrobat Pro 是面向办公、法务、财务、教育及出版用户的专业PDF处理软件,可在Mac上创建、编辑、转换、合并和保护文档,并提供OCR文字识别、表单、批注、内容比较、敏感信息遮盖及电子签名功能。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
AutoCAD 是 Autodesk 推出的专业计算机辅助设计软件,Windows 版支持精确二维绘图、三维实体与曲面建模、图纸标注、布局发布和任务自动化,并包含多套行业专业化工具组合,适用于建筑、机械、电气、工程建设及制造设计人员。
Adobe Acrobat Pro 是面向专业 PDF 工作的综合解决方案,可在 Windows 中创建、编辑、转换、比较、整理和保护文档,并支持表单、电子签名、扫描件文字识别及敏感信息永久遮盖。订阅还包含网页、移动服务和云端协作能力,
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。













