风险与修复示例
风险与修复示例
风险:response['Location'] = user_input
修复:剔除 \r 与 \n,或改为仅允许站内路径白名单
框架层:主流现代框架直接抛错拒绝含 CR/LF 的头值自检要点
自检要点
检索代码中拼接响应头的位置
Location、Set-Cookie 与自定义头都要覆盖
结合缓存层评估:是否可能污染共享缓存老版本语言运行时可能不默认拦截,升级运行时本身也是缓解手段之一。
把用户输入放入响应头(如 Location、Set-Cookie)时,回车换行字符可拆分出额外头部甚至响应体,形成会话固定或缓存投毒;现代框架通常已默认拦截,拼接型代码仍要警惕。
风险:response['Location'] = user_input
修复:剔除 \r 与 \n,或改为仅允许站内路径白名单
框架层:主流现代框架直接抛错拒绝含 CR/LF 的头值检索代码中拼接响应头的位置
Location、Set-Cookie 与自定义头都要覆盖
结合缓存层评估:是否可能污染共享缓存