Faire accepter par Apache LF vs CRLF dans les en-têtes de requête
j'ai un produit en héritage que j'essaie de prendre en charge sur un serveur Apache et le serveur seulement après qu'une récente mise à jour ait commencé à rejeter les en-têtes de requête qui n'utilisaient que LF pour les nouvelles lignes et c'est un gros problème pour le reconstruire à cause de l'âge de la base de code. Y a-t-il un paramètre quelque part qui peut être utilisé ou une commande mod_rewrite qui peut être utilisée pour autoriser les en-têtes de requête qui utilisent LF au lieu de CRLF ou qui vont réécrire LF comme en-têtes de requête CRLF?
exemple en-tête à partir de l'app:
Host: www.ourhostname.com:80n
Accept-language: enn
user_agent: Our Old Applicationn
n
si je hex édite le fichier pour changer le n
rn
, ça marche, mais HEX éditer un fichier pour la publication en tant que mise à jour n'est pas souhaité et j'essaye de trouver quelque chose côté serveur pour faire en sorte Qu'Apache arrête de s'étouffer sur des LF par eux-mêmes. Merci d'avance pour toute aide sur ce problème!
2 réponses
nous avons eu le même problème et avons trouvé la vulnérabilité corrigée D'Apache:
important: demande HTTP Apache Parsing défauts D'Espace CVE-2016-8743 https://httpd.apache.org/security/vulnerabilities_24.html
ces défauts sont corrigés avec la version 2.4.25 du serveur HTTP Apache et coordonnés par une nouvelle directive;
HttpProtocolOptions Strict
qui est le comportement par défaut de 2.4.25 et plus tard. Par le basculement de "Stricte" comportement "Dangereux" comportement, certaines restrictions peuvent être assouplies pour permettre à certains invalides de clients HTTP/1.1 pour communiquer avec le serveur, mais cela va réintroduire la possibilité de les problèmes décrits dans la présente évaluation. Notez que le fait d'assouplir le comportement à 'Unsafe' ne permettra toujours pas de CTLs crus autres que HTAB (là où autorisé), mais permettra à d'autres exigences RFC de ne pas être appliquée, tels que exactement deux caractères SP dans la ligne de la requête.
Donc, HttpProtocolOptions Unsafe
directive peut être votre solution. Nous avons décidé de ne pas l'utiliser.
vous pouvez mettre un mandataire inversé d'une sorte quelconque devant Apache et avoir ce handle convertissant la requête en quelque chose D'Apache-friendly pour vous. Peut-être Varnish Cache fonctionnerait, qui peut aussi fonctionner comme un simple processeur HTTP, ou NGINX. Une autre option peut être un petit noeud.js app pour accepter l'entrée squiffy et de le convertir en quelque chose de mieux pour vous tout en piping à l'arrière-bout.