Domanda

Dipende dal browser? Inoltre, diversi stack web hanno limiti diversi su quanti dati possono ottenere dalla richiesta?

È stato utile?

Soluzione

RFC 2616 (Hypertext Transfer Protocol - HTTP / 1.1) afferma che non vi sono limiti al lunghezza di una stringa di query (sezione 3.2.1). RFC 3986 afferma inoltre che non esiste alcun limite, ma indica che il nome host è limitato a 255 caratteri a causa del DNS limitazioni (sezione 2.3.3).

Mentre le specifiche non specificano alcuna lunghezza massima, i limiti pratici sono imposti dal browser web e dal software server. Sulla base della ricerca trovata su Boutell.com :

  • Microsoft Internet Explorer (Browser)
    Microsoft afferma che la lunghezza massima di un URL in Internet Explorer è di 2.083 caratteri, con non più di 2.048 caratteri nella parte del percorso dell'URL. I tentativi di utilizzare URL più lunghi di questo hanno prodotto un chiaro messaggio di errore in Internet Explorer.

  • Microsoft Edge (Browser)
    Il limite sembra essere di circa 81578 caratteri. Vedi Limitazione della lunghezza dell'URL di Microsoft Edge

  • Chrome
    Smette di visualizzare l'URL dopo 64k caratteri, ma può servire più di 100k caratteri. Non sono stati effettuati ulteriori test oltre a questo.

  • Firefox (Browser)
    Dopo 65.536 caratteri, la barra degli indirizzi non visualizza più l'URL in Windows Firefox 1.5.x. Tuttavia, funzioneranno URL più lunghi. Non sono stati effettuati ulteriori test dopo 100.000 caratteri.

  • Safari (Browser)
    Almeno 80.000 personaggi funzioneranno. I test non sono stati provati oltre.

  • Opera (Browser)
    Almeno 190.000 personaggi funzioneranno. Test interrotto dopo 190.000 caratteri. Opera 9 per Windows ha continuato a visualizzare un file completamente modificabile, URL copiabile e incollabile nella barra degli indirizzi anche a 190.000 caratteri.

  • Apache (Server)
    I primi tentativi di misurare la lunghezza massima dell'URL nei browser Web si sono imbattuti in un limite di lunghezza dell'URL del server di circa 4.000 caratteri, dopodiché Apache produce un "413 Entità troppo grande" errore. È stata utilizzata l'attuale build Apache aggiornata trovata in Red Hat Enterprise Linux 4. La documentazione ufficiale di Apache menziona solo un limite di 8.192 byte su un singolo campo in una richiesta.

  • Microsoft Internet Information Server (Server)
    Il limite predefinito è 16.384 caratteri (sì, il server Web di Microsoft accetta URL più lunghi del browser Web di Microsoft). Questo è configurabile.

  • Perl HTTP :: Daemon (Server)
    Funzioneranno fino a 8.000 byte. Coloro che costruiscono server di applicazioni Web con il modulo HTTP :: Daemon di Perl incontreranno un limite di 16.384 byte sulla dimensione combinata di tutte le intestazioni di richiesta HTTP. Ciò non include i dati dei moduli del metodo POST, i caricamenti di file, ecc., Ma include l'URL. In pratica, ciò ha comportato un errore 413 quando un URL era significativamente più lungo di 8000 caratteri. Questa limitazione può essere facilmente rimossa. Cerca tutte le occorrenze di 16x1024 in Daemon.pm e sostituiscile con un valore maggiore. Naturalmente, ciò aumenta la tua esposizione agli attacchi denial of service.

Altri suggerimenti

Sebbene ufficialmente non vi siano limiti, molti consigli sulla configurazione della sicurezza affermano che maxQueryStrings su un server deve essere impostato su un limite massimo di caratteri di 1024 mentre l'intero URL, inclusa la stringa di query, deve essere impostato su un massimo di 2048 caratteri. Questo serve a prevenire la vulnerabilità della richiesta HTTP lenta su un server Web per prevenire attacchi DDOS lenti che vengono visualizzati sullo scanner di applicazioni Web Qualys e su altri scanner di sicurezza.

Consultare il codice seguente per i server IIS Windows con Web.config:

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

Diversi stack Web supportano diverse lunghezze di richieste http. So per esperienza che le prime pile di Safari supportavano solo 4000 caratteri e quindi avevano difficoltà a gestire le pagine ASP.net a causa dello STATO UTENTE. Questo è anche per POST, quindi dovresti controllare il browser e vedere qual è il limite di stack. Penso che potresti raggiungere un limite anche sui browser più recenti. Non ricordo, ma uno di questi (IE6, credo) aveva un limite di 16 bit, 32.768 o qualcosa del genere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top