A hint: This file contains one or more very long lines, so maybe it is better readable using the pure text view mode that shows the contents as wrapped lines within the browser window.
1 <?xml version="1.0" encoding="iso-8859-1" ?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 5 <head> 6 <title>Wie gehen Firewalls mit 'Content-Encoding: gzip' um?</title> 7 <meta name="author" content="Michael Schröpl" /> 8 <meta name="description" content="Eine Beschreibung des Verhaltens einiger Firewalls bezüglich komprimierter Seiteninhalte" /> 9 <meta name="keywords" content="Firewall, HTTP, Kodierung, gzip, Komprimierung" /> 10 <style type="text/css"> 11 body{font-family:sans-serif;margin:0px 30px 0px 30px;} 12 h1{font-size:22px;margin-top:20px;} 13 h2{font-size:18px;margin-top:14px;} 14 small{font-size:80%;} 15 td{vertical-align:top;} 16 tt{font-weight:bold;} 17 code,tt{font-family:"Courier New",monospace;} 18 h1,h2{margin-bottom:1px;} 19 p,td{margin-top:3px;margin-bottom:3px;} 20 p,ul,ol,li{font-size:17px;line-height:22px;} 21 ul,ol,li{margin-top:0px;margin-bottom:0px;} 22 img{border-width:0;} 23 24 #nav{position:absolute;top:30px;left:0px;font-size:14px;width:170px;font-weight:bold;margin:2px 2px 2px 30px;} 25 #nav[id]{position:fixed;} 26 #nav img{margin:5px;} 27 #nav p, #nav a:hover, #nav a{display:block;padding:3px;margin:2px;width:150px;font-size:15px;line-height:18px;} 28 #content{position:absolute;left:220px;right:30px;} 29 #mail{text-align:right;} 30 #icon{width:190px;float:left;} 31 #mail,#icon{margin-top:30px;} 32 33 @media screen { 34 body{color:#000;background-color:#f8ebd9;} 35 h1{color:#666;} 36 h2{color:#840;} 37 code{color:#333;} 38 em{color:#900;} 39 tt{color:#909;} 40 h1,h2,code,em,tt{background-color:inherit;} 41 .new13192a{color:#inherit;background-color:#ffd;} 42 .new13261a{color:#inherit;background-color:#eff;} 43 .bugfix{color:#fff;background-color:#f00;font-weight:bold;padding:0px 4px;} 44 #nav a{color:#530;background-color:transparent;} 45 #nav a{text-decoration:none;} 46 #nav p, #nav a:hover{color:#000;background-color:#fff;} 47 #nav p {border:1px #660 solid;} 48 #nav a {border:1px #666 dotted;} 49 } 50 51 @media print { 52 #icon,#nav{display:none;} 53 #content{position:absolute;left:0px;right:0px;} 54 } 55 </style> 56 </head> 57 58 <body> 59 60 <div id="nav"> 61 62 <img src="mod_gzip_logo.gif" height="47" width="102" alt="mod_gzip-Logo" /> 63 64 65 <a title="mod_gzip - was ist das überhaupt?" href="index.htm">mod_gzip</a> 66 67 68 69 <a title="Komprimierung von HTTP-Inhalten durch Content-Encoding" href="encoding.htm">Content-Encoding</a> 70 71 72 73 <a title="Welche Browser können mit 'Content-Encoding: gzip' umgehen?" href="browser.htm">Browser</a> 74 75 76 77 <p>Firewalls</p> 78 79 80 81 <a title="Eine Beispiel-Konfiguration für mod_gzip" href="config.htm">Konfiguration</a> 82 83 84 85 <a title="Beschreibung sämtlicher mod_gzip-Status-Codes" href="status.htm">Status-Codes</a> 86 87 88 89 <a title="Mögliche Erweiterungen in künftigen Versionen von mod_gzip" href="enhancements.htm">Erweiterungen</a> 90 91 92 93 <a title="Zwischenspeicherung mod_gzip-komprimierter Daten durch Proxy-Server" href="cache.htm">Caching</a> 94 95 96 97 <a title="Versions-Historie und Änderungsprotokoll von mod_gzip" href="versions.htm">Versionen</a> 98 99 100 101 <a title="Andere Quellen zu mod_gzip" href="links.htm">Links</a> 102 103 104 </div> 105 106 <div id="content"> 107 108 <h1>Wie gehen Firewalls mit <code>Content-Encoding: gzip</code> um?</h1> 109 110 <h2><a id="task"></a>Aufgaben einer Firewall</h2> 111 <p>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.</p> 112 <p>Dies setzt voraus, daß die Firewall diesen Inhalt <em>versteht</em>.</p> 113 <p>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 <code>Content-Encoding</code> der Antwort drin.</p> 114 115 <h2><a id="easyway"></a>Die 'einfache Lösung'</h2> 116 <p>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 <code>Accept-Encoding</code>-Header aus der zu sendenden Anforderung!</p> 117 <p>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.</p> 118 <p><em>Sehr dumme</em> Firewalls, beispielsweise Zone Alarm, überschreiben einfach den <code>Accept-Encoding</code>-Header mit willkürlichen Zeichen, etwa <code>Xxxxxx-Xxxxxxx: xxxx</code>. 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.</p> 119 <p><em>Etwas weniger dumme</em> Firewalls, beispielweise Cequrux ab Version 4.1.8, lesen den HTTP-Header zeilenweise und entfernen die <code>Accept-Encoding</code>-Zeile vollständig. Das ist natürlich nicht weniger ärgerlich.</p> 120 121 <h2><a id="recognize"></a>Wie kann ich ein solches Verhalten erkennen?</h2> 122 <p>Der Benutzer einer Firewall hat immerhin die Möglichkeit, eine Anforderung an ein <a href="http://www.schroepl.net/cgi-bin/http_trace.pl"><img class="linkicon" height="15" width="16" alt="arrow" title="external" src="extern.gif" />Programm</a> 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 ...</p> 123 124 <div id="icon"> 125 <a href="http://validator.w3.org/check/referer"><img alt="" title="valid XHTML 1.1" height="31" width="88" src="valid-xhtml11.png" /></a><a href="http://jigsaw.w3.org/css-validator/check/referer"><img alt="" title="valid CSS" height="31" width="88" src="valid-css.png" /></a> 126 </div> 127 128 129 <p id="mail">(<a href="mailto:michael.schroepl@gmx.de?subject=mod_gzip">Michael Schröpl</a>, 2002-08-30)</p> 130 131 </div> 132 133 </body> 134 </html>