Apache: Bug in 1.3.10+
Michael Schröpl
- webserver
Hallo Leute,
ich habe gerade einen häßlichen bug in Apache entdeckt.
(Nicht als erster - in der Apache-Bug-Datenbank ist er
bereits als #5819 bekannt, aber das nützt mir wenig.)
Apache hat offenbar in Version 1.3.10 eine zusätzliche
Routine zum Prüfen des korrekten Aufbaus eines Host-
Headers eingebaut - mit dem Effekt, daß nun Hostnamen,
welche einen "_" (underscore) enthalten, nicht mehr
akzeptiert werden.
Ich habe einen frisch installierten Apache-Webserver
(1.3.12, Änderungsdatum "gestern") unter Windows NT4 SP4.
Wenn ich ihn in der URL via IP-Adresse anspreche, also
http://153.46.90.173/
anspreche, funktioniert er tadellos.
Gebe ich statt dessen seinen Hostnamen an, etwa bei
http://pc_ms_test/
, dann erhalte ich als Antwort:
Bad Request
Your browser sent a request that this server could not understand.
Client sent malformed Host header
Apache/1.3.12 Server at pc_ms_test Port 80
Man könnte natürlich einfach seinen Hostnamen ändern ...
es sei denn, man darf das nicht, oder er ist im WWW bekannt
(Bookmarks etc.) oder was auch immer.
Bei uns im Büro heißen nun mal alle PCs "pc_*".
Mir bleibt also nur: Weiter Apache 1.3.9 verwenden.
Hat vielleicht jemand von der "DNS-Fraktion" eine Idee
für einen Workaround?
mfG
Michael
Hallo Michael,
Apache hat offenbar in Version 1.3.10 eine zusätzliche
Routine zum Prüfen des korrekten Aufbaus eines Host-
Headers eingebaut - mit dem Effekt, daß nun Hostnamen,
welche einen "_" (underscore) enthalten, nicht mehr
akzeptiert werden.
Ja, das ist auch in der 2.0er alpha release so und ich würde es nicht unbedingt als bug ansehen, sondern eher als ein quasi "use strict". Registrierte TLD's dürfen ja auch ausschließlich nur aus a-z, 0-9 und dem bindestrich (-) bestehen, der unterstrich (_) ist nicht erlaubt.
Ich würde zwecks kompatibilität einfach keine hostnamen verwenden, die nicht auch dieser regel gehorchen.
ciao,
rob.
ich habe gerade einen häßlichen bug in Apache entdeckt.
Nee...
Apache hat offenbar in Version 1.3.10 eine zusätzliche
Routine zum Prüfen des korrekten Aufbaus eines Host-
Headers eingebaut - mit dem Effekt, daß nun Hostnamen,
welche einen "_" (underscore) enthalten, nicht mehr
akzeptiert werden.
Ist doch gut?!
Gebe ich statt dessen seinen Hostnamen an, etwa bei
http://pc_ms_test/
, dann erhalte ich als Antwort:
Bad Request
Your browser sent a request that this server could not understand.
Client sent malformed Host header
Apache/1.3.12 Server at pc_ms_test Port 80
Völlig korrekt, dein Hostname darf keinen '_' enthalten, tut er es doch, ist er fehlgeformt und darf/kann nicht bearbeitet werden.
Man könnte natürlich einfach seinen Hostnamen ändern ...
Richtig, dass musst du tun.
es sei denn, man darf das nicht, oder er ist im WWW bekannt
(Bookmarks etc.) oder was auch immer.Bei uns im Büro heißen nun mal alle PCs "pc_*".
Tut mir leid das sagen zu müssen, aber ihr hättet jemanden einstellen sollen, der sich mit sowas auskennt.
Hat vielleicht jemand von der "DNS-Fraktion" eine Idee
für einen Workaround?
Das Problem ist kein DNS-Problem sondern ein selbstverursachtes. Wenn du aber deine eigene Software unbedingt buggy machen willst, musst du eben die Prüfroutine ändern.
Bei uns im Büro heißen nun mal alle PCs "pc_*".
Tut mir leid das sagen zu müssen, aber ihr hättet jemanden einstellen sollen, der sich mit sowas auskennt.
Vielen Dank!
Ich habe Deine ausführliche Beschreibung an die entsprechende Abteilung weitergeleitet. Mal sehen, was passiert ... ;-)