Pruebas de seguridad: parámetros HTTP
Parámetros HTTP
Aquí discutiremos algunos parámetros importantes del protocolo HTTP y su sintaxis que se requieren para construir los mensajes de solicitud y respuesta al escribir programas de cliente o servidor HTTP. Cubriremos el uso completo de estos parámetros en los capítulos siguientes y explicaremos la estructura del mensaje para las solicitudes y respuestas HTTP.
Versión HTTP
HTTP usa un <major>.<minor>esquema de numeración para indicar versiones del protocolo. La versión de un mensaje HTTP se indica mediante un campo Versión HTTP en la primera línea. Aquí está la sintaxis general para especificar el número de versión HTTP:
HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
Example
HTTP/1.0
or
HTTP/1.1
Identificadores uniformes de recursos (URI)
URI es simplemente una cadena formateada que no distingue entre mayúsculas y minúsculas que contiene el nombre, la ubicación, etc. para identificar un recurso. Por ejemplo, el nombre de un sitio web, un servicio web, etc. Una sintaxis general de URI utilizada para HTTP es la siguiente:
URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
Aquí, si el port está vacío o no se proporciona, el puerto 80 se supone para HTTP y un vacío abs_path es equivalente a un abs_pathde "/". Los personajes distintos a los delreserved y unsafe los conjuntos son equivalentes a su codificación ""% "HEX HEX".
Example
Los siguientes tres URI son equivalentes:
http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7esmith/home.html
Formatos de fecha / hora
Todas las marcas de fecha / hora HTTP deben estar representadas en la hora media de Greenwich (GMT), sin excepción. Las aplicaciones HTTP pueden utilizar cualquiera de las siguientes tres representaciones de marcas de fecha / hora:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
Conjuntos de caracteres
Utilice el juego de caracteres para especificar los juegos de caracteres que prefiere el cliente. Se pueden enumerar varios juegos de caracteres separados por comas. Si no se especifica un valor, el valor predeterminado es US-ASCII.
Example
Los siguientes conjuntos de caracteres son válidos:
US-ASCII
or
ISO-8859-1
or
ISO-8859-7
Codificaciones de contenido
Los valores de codificación de contenido indican que se utiliza un algoritmo de codificación para codificar el contenido antes de pasarlo por la red. Las codificaciones de contenido se utilizan principalmente para permitir que un documento se comprima o se transforme de manera útil sin perder la identidad.
Todos los valores de codificación de contenido no distinguen entre mayúsculas y minúsculas. HTTP / 1.1 utiliza valores de codificación de contenido en los campos de encabezado Accept-Encoding y Content-Encoding.
Example
Los siguientes son esquemas de codificación válidos:
Accept-encoding: gzip
or
Accept-encoding: compress
or
Accept-encoding: deflate
Tipos de medios
HTTP utiliza tipos de medios de Internet en el Content-Type y Acceptcampos de encabezado para proporcionar escritura de datos abierta y extensible y negociación de tipos. Todos los valores de tipo de medio se registran con la Autoridad de números asignados de Internet ((IANA). La siguiente sintaxis general especifica el tipo de medio:
media-type = type "/" subtype *( ";" parameter )
Los nombres de atributo de tipo, subtipo y parámetro no distinguen entre mayúsculas y minúsculas.
Example
Accept: image/gif
Etiquetas de idioma
HTTP usa etiquetas de idioma dentro del Accept-Language y Content-Languagecampos. Una etiqueta de idioma se compone de 1 o más partes: una etiqueta de idioma principal y una serie posiblemente vacía de subetiquetas -
language-tag = primary-tag *( "-" subtag )
No se permiten espacios en blanco dentro de la etiqueta y todas las etiquetas no distinguen entre mayúsculas y minúsculas.
Example
Las etiquetas de ejemplo incluyen:
en, en-US, en-cockney, i-cherokee, x-pig-latin
Donde cualquier etiqueta primaria de dos letras es una abreviatura de idioma ISO-639 y cualquier subetiqueta inicial de dos letras es un código de país ISO-3166.