Wie gehen Firewalls mit Content-Encoding: gzip um?

Aufgaben einer Firewall

Eine der Aufgaben einer Firewall - egal, ob Firmen-Firewall oder Personal Firewall auf dem Client-Rechner - besteht darin, 'gefährliche' bzw. 'unerwünschte' Inhalte aus den empfangenen Daten zu entfernen.

Dies setzt voraus, daß die Firewall diesen Inhalt versteht.

Natürlich könnte eine korrekt arbeitende Firewall komprimierte Inhalte sehr wohl verstehen und entpacken - das zu verwendende Verfahren steht ja explizit im HTTP-Header Content-Encoding der Antwort drin.

Die 'einfache Lösung'

Einige Firewalls sind dazu aber nicht in der Lage. Da sie dennoch ihre Aufgabe zu erfüllen versuchen, tun sie etwas sehr Unerwünschtes: Sie entfernen einfach den Accept-Encoding-Header aus der zu sendenden Anforderung!

Dadurch kommt nun kein ordentlich arbeitender Server mehr auf die Idee, codierte Daten zu senden ... das ist natürlich nicht im Sinne des Erfinders, denn die Übertragungsgeschwindigkeit leidet dadurch moglicherweise erheblich.

Sehr dumme Firewalls, beispielsweise Zone Alarm, überschreiben einfach den Accept-Encoding-Header mit willkürlichen Zeichen, etwa Xxxxxx-Xxxxxxx: xxxx. Das erspart es ihnen, das so modifizierte Anforderungspaket in Teilen zu versenden - sie kippen dann einfach den gesamten Puffer auf die Leitung, seine Länge hat sich ja nicht geändert.

Etwas weniger dumme Firewalls, beispielweise Cequrux ab Version 4.1.8, lesen den HTTP-Header zeilenweise und entfernen die Accept-Encoding-Zeile vollständig. Das ist natürlich nicht weniger ärgerlich.

Wie kann ich ein solches Verhalten erkennen?

Der Benutzer einer Firewall hat immerhin die Möglichkeit, eine Anforderung an ein arrowProgramm seiner Wahl im WWW zu senden und sich von diesem den Inhalt der dort eingetroffenen HTTP-Header anzeigen zu lassen - dann weiß er wenigstens, worauf er sich da eingelassen hat ...

(Michael Schröpl, 2002-08-30)