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.