In attesa di un grande studio sull'implicazione della memoria PHP con esempi pratici, che prevedo di pubblicare a breve e un possibile concetto di "Denial of Service alternativo" (esaurire il limite di memoria PHP che es. su WordPress è solitamente impostato a 256MB, anziché concentrarsi sull'ampiezza di banda del server, 1-2 Gbps ad esempio), oggi accenniamo al codice HTTP 414 ovvero Request-URI Too Long, "<<L'URI richiesto è troppo grande per essere elaborato dal server>>".
In genere, secondo i vari consigli è bene che un URL si mantenga sotto i 2000 caratteri totali (numero comunque molto grande!!). I limiti sono:
- compatibilità con il browser: oltre i 2000 caratteri, non sempre il browser lo supporta
- limiti imposti dal server: valori più o meno stringenti, su questo punto ci ritorniamo dopo
Esempio pratico: supponiamo di avere un sito web, esempio.com. I parametri URL, di vario genere (anche fasulli) aumentano la lunghezza dell'URL, quindi, che l'URL sia realistico o meno, abbiamo:
esempio.com/?sadasdadasdsadasdas
esempio.com/?q=chiave+di+ricerca+nel+sito&altro...
Nel primo caso, ci interessa solamente la lunghezza totale. Nel secondo caso, per "realistico" si intende ad esempio con q= (oppure t=, s=, a seconda del sito web) la ricerca interna del sito e con il parametro "&" (AND) altri parametri che realmente "funzionano" es. i filtri di ricerca di un e-commerce: tutti elementi passati via PHP tramite GET, che quindi costruiscono un URL personalizzato, anche molto lungo.
Vediamo una procedura operativa (per raccogliere un po' di informazioni sul server in questione, sapere eventualmente come intervenire per uno stress-test/attacco):
- vedere il limite effettivo del server: aiutandosi es. con un editor di testo che conta i caratteri, inserire un numero totale di caratteri come parametri URL (compreso il domino, quindi esempio.com/?sadasdadasdsadasdas), fintanto che il totale caratteri sia ad esempio 1000, 2000, 5000, ecc
- fare copia-incolla nel browser: se restituisce HTTP 414, l'URL è troppo lungo, provare a ridurre il numero di caratteri; se invece carica la pagina, allora si può allungare l'URL, fino a trovare il valore limite (i parametri URL "fasulli" semplicemente non attivano nulla, ma contruibuiscono comunque alla lunghezza totale, ciò che conta sono i caratteri totali); in questo modo quindi, procedendo per tentativi, si arriva a trovare il valore limite accettato dal server
Come detto, uno studio più approfondito verrà mostrato prossimamente. Ciò che è importante capire, è questo: se "x" è la lunghezza dell'URL e quindi la sua dimensione in memoria, N-richieste significa N * x come spazio occupato. Da browser richiede molta memoria RAM aprire e gestire più schede, mentre ad esempio da terminale con wget, comando di base "wget URL", l'uso di risorse è minimo e dal punto di vista stress-test incide molto di più rispetto all'invio di pacchetti ping. Infatti, da precisare, wget consente di inserire non solo un dominio ma un URL completo, anche con eventuali parametri URL! Quindi l'unico limite è la lunghezza massima consentita dal server. Ovviamente, in modo analogo a un DDoS basato sul ping, tramite Botnet anche con wget possiamo usare comandi bash in contemporanea, vedere anche bash e ciclo for.