Un servidor web podría usar el contenido del User-Agent
para el encabezado fines de registro , para controlar el acceso (" deny all bots ") o devolver respuestas alternativas (" páginas compatibles con dispositivos móviles " ). La validez de un valor de encabezado depende de la aplicación, no es posible escribir en una regla que funcione con todo.
Considere el encabezado Cookie
. Un sitio podría usarlo simplemente para almacenar un identificador de sesión como sessionid=01234567890abcdef
. Un sitio diferente puede elegir almacenar locales, como lang=nl-NL
. Podría aplicar una lista negra de caracteres, pero alguien podría explotar un error en su aplicación que haga que lang=--help
sea tratado como una línea de comandos opción .
Para los programas CGI , los navegadores web normalmente invocarán el script y pasarán los encabezados a través de variables de entorno tales que el script también puede utilizar esta información. Esto no se limita al encabezado User-Agent
, los valores de Cookie
podrían ser más interesantes para el script. El "formulario de entrada" que usted describe es diferente de los encabezados. Los encabezados aparecen antes del cuerpo del mensaje.
Ahora sobre el error Bash que conduce al problema de seguridad "Shellshock", todo lo que necesita es el control sobre al menos una variable de entorno. Como puede ver, el acceso CGI directo en un servidor web es un ejemplo donde se cumple esa condición. También podría verse afectado cuando el programa (PHP, Cgit, ...) invoque el shell, directamente (a través de un script de shell ) o indirectamente (a través de un comando de shell ).