Frage

Ist es Browser abhängig? Außerdem haben verschiedene Web-Stacks haben unterschiedliche Grenzen, wie viele Daten sie von der Anfrage bekommen?

War es hilfreich?

Lösung

RFC 2616 (Hypertext Transfer Protocol - HTTP / 1.1) besagt, gibt es keine Begrenzung für die Länge eines Query-String (Abschnitt 3.2.1). RFC 3986 heißt es auch gibt es keine Begrenzung, sondern zeigt den Hostnamen wegen DNS auf 255 Zeichen beschränkt ist Einschränkungen (siehe Abschnitt 2.3.3).

Während die Spezifikationen geben keine maximale Länge, praktische Grenzen werden durch Web-Browser und Server-Software eingeführt. Basierend auf der Forschung unter Boutell.com :

  • Microsoft Internet Explorer (Browser)
    Microsoft stellt fest, dass die maximale Länge eine URL im Internet Explorer 2.083 Zeichen ist, mit nicht mehr als 2.048 Zeichen in dem Pfadabschnitt der URL. Versuche, URLs zu verwenden, die länger als dies erzeugt eine klare Fehlermeldung in Internet Explorer.

  • Microsoft Edge (Browser)
    Die Grenze wird um 81.578 Zeichen sein. Siehe URL-Längenbeschränkung von Microsoft Edge

  • Chrome
    Es hört auf Anzeige die URL nach 64k Zeichen, kann aber mehr als 100k Zeichen dienen. Keine weiteren Tests wurde darüber hinaus das getan.

  • Firefox (Browser)
    Nach 65.536 Zeichen, zeigt die Adressleiste nicht mehr die URL in Windows Firefox 1.5.x. Allerdings wird mehr URLs arbeiten. Keine weiteren Tests wurden nach 100.000 Zeichen getan.

  • Safari (Browser)
    Mindestens 80.000 Zeichen arbeiten. Der Test wurde nicht darüber hinaus versucht.

  • Opera (Browser)
    Mindestens 190.000 Zeichen arbeiten. Gestoppt Prüfung nach 190.000 Zeichen. Opera 9 für Windows weiterhin eine voll editierbar angezeigt werden, kopierbar und pasteable URL in der Adressleiste auch bei 190.000 Zeichen.

  • Apache (Server)
    Frühe Versuche, um die maximale Länge URL in Webbrowsern in eine Server-URL-Längengrenze von etwa 4000 Zeichen gestoßen zu messen, nach der Apache „zu groß 413 Entity“ Fehler A erzeugt. Der Strom bis zu Apache Datum Build in Red Hat Enterprise Linux 4 gefunden wurde verwendet. Die offizielle Apache Dokumentation erwähnt nur eine 8192-Byte-Grenze auf ein einzelnes Feld in einer Anfrage.

  • Microsoft Internet Information Server (Server)
    Das Standard-Limit 16.384 Zeichen ist (ja, Microsofts Webserver akzeptiert mehr URLs als Microsofts Web-Browser). Dies ist konfigurierbar.

  • Perl HTTP :: Daemon (Server)
    Bis zu 8.000 Bytes arbeiten. Diejenigen, die Konstruktion Webanwendungsservern mit Perl HTTP :: Daemon-Modul wird auf die kombinierte Größe aller HTTP-Request-Header ein 16.384 Byte-Grenze stoßen. Dies gilt nicht POST-Methode Formulardaten, Datei-Uploads sind, etc., aber es macht die URL enthalten. In der Praxis führte dies zu einem Fehler 413, wenn eine URL als 8.000 Zeichen deutlich länger war. Diese Einschränkung kann leicht entfernt werden. Geben Sie für alle Vorkommen von 16x1024 in Daemon.pm und ersetzen sie durch einen größeren Wert. Natürlich tut dies Ihre Gefährdung durch Denial-of-Service-Attacken erhöhen.

Andere Tipps

Obwohl offiziell gibt es keine Begrenzung, sollten viele Sicherheitskonfiguration Empfehlungen fest, dass maxQueryStrings auf einem Server zu einer maximalen Zeichenbegrenzung von 1024 eingestellt werden, während die gesamte URL einschließlich der Abfrage-String sollte auf maximal 2048 Zeichen gesetzt werden. Dies ist die langsame HTTP-Request-Verwundbarkeit auf einem Webserver zu verhindern langsam DDOS-Attacken zu verhindern, die auf der Qualys Web Application Scanner und anderen Sicherheitsscanner erscheinen.

Bitte beachten Sie der folgende Code für Windows IIS-Server mit Web.config:

<security>
    <requestFiltering>
        <requestLimits maxQueryString="1024" maxUrl="2048">
           <headerLimits>
              <add header="Content-type" sizeLimit="100" />
           </headerLimits>
        </requestLimits>
     </requestFiltering>
</security>

Verschiedene Web-Stacks haben unterschiedliche Längen von http-Anforderungen unterstützen. Ich weiß aus Erfahrung, dass die frühen Stapel von Safari nur 4000 Zeichen unterstützt und somit hatten Schwierigkeiten Umgang mit ASP.net Seiten wegen des USER-STATE. Dies ist auch für POST, so dass Sie den Browser überprüfen müßten und sehen, was die Stapelgrenze ist. Ich denke, dass Sie sich auf noch neueren Browser eine Grenze erreichen können. Ich kann mich nicht erinnern, aber einer von ihnen (IE6, glaube ich) ein Limit von 16-Bit-Grenze hatte, 32.768 oder so etwas.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top