我有一个遗留产品,我试图在Apache服务器和服务器上支持,只是在最近的更新开始拒绝请求标题后才使用LF作为换行,并且由于它的年龄大小而重建它是一个很高的顺序代码库是。是否有可以使用的设置或mod_rewrite命令可以利用它来允许使用LF而不是CRLF的请求头,或者将LF重写为请求头中的CRLF?
来自app的示例标题:
Host: www.ourhostname.com:80\n
Accept-language: en\n
user_agent: Our Old Application\n
\n
如果我十六进制编辑文件以将\n
更改为\r\n
,它可以正常工作,但十六进制编辑文件以作为更新发布是不可取的,我正在尝试找到一些服务器让Apache自己停止对LF的窒息。提前感谢您对此问题的任何帮助!
答案 0 :(得分:8)
我们遇到了同样的问题并发现了Apache的固定漏洞:
重要:Apache HTTP请求解析空白缺陷CVE-2016-8743 https://httpd.apache.org/security/vulnerabilities_24.html
这些缺陷通过Apache HTTP Server 2.4.25的发布解决,并由新指令协调;
HttpProtocolOptions Strict
这是2.4.25及更高版本的默认行为。通过从“严格”行为切换到“不安全”行为,可以放宽一些限制以允许一些无效的HTTP / 1.1客户端与服务器通信,但这将重新引入此评估中描述的问题的可能性。请注意,将行为放宽为“不安全”仍然不允许除HTAB之外的原始CTL(在允许的情况下),但是将允许不强制执行其他RFC要求,例如请求行中的两个SP字符。
因此,HttpProtocolOptions Unsafe
指令可能是您的解决方案。我们决定不使用它。
答案 1 :(得分:3)
您可以在Apache面前放置某种反向代理,并将处理请求转换为Apache友好的代码。也许Varnish Cache可以工作,它也可以作为HTTP处理器或NGINX。另一个选项可能是一个小Node.js应用程序接受squiffy输入并将其转换为更好的东西,同时将它管道到后端。