Un server web potrebbe utilizzare il contenuto dell'intestazione User-Agent
per operativi di registrazione , per controllare l'accesso (" nega tutti i robot ") o restituire risposte alternative (" pagine ottimizzate per dispositivi mobili ") ). La validità di un valore di intestazione dipende dall'applicazione, non è possibile scrivere sulla regola che funziona con tutto.
Considera l'intestazione Cookie
. Un sito potrebbe semplicemente utilizzarlo per memorizzare un identificativo di sessione come sessionid=01234567890abcdef
. Un sito diverso potrebbe scegliere di memorizzare le impostazioni locali, ad esempio lang=nl-NL
. Potresti applicare una blacklist di caratteri, ma qualcuno potrebbe sfruttare un bug nella tua applicazione che risulta in lang=--help
trattata come una riga di comando opzione .
Per i programmi CGI , i browser Web invocheranno solitamente lo script e passeranno le intestazioni tramite variabili di ambiente tali che lo script può utilizzare anche queste informazioni. Questo non è limitato all'intestazione User-Agent
, i valori di Cookie
potrebbero essere più interessanti per lo script. Il "modulo di input" che descrivi è diverso dalle intestazioni. Le intestazioni vengono prima del corpo del messaggio.
Ora sul bug di Bash che porta al problema di sicurezza "Shellshock", tutto ciò che serve è il controllo su almeno una variabile d'ambiente. Come puoi vedere, l'accesso CGI diretto su un server web è un esempio in cui tale condizione è soddisfatta. Potresti anche essere influenzato quando il programma (PHP, Cgit, ...) richiama la shell, direttamente (tramite uno script di shell ) o indirettamente (tramite un comando shell ).