Teste de segurança - Parâmetros HTTP

Parâmetros HTTP

Discutiremos aqui alguns parâmetros de protocolo HTTP importantes e sua sintaxe que são necessários para construir as mensagens de solicitação e resposta ao escrever programas de cliente ou servidor HTTP. Abordaremos o uso completo desses parâmetros nos capítulos subsequentes, enquanto explicamos a estrutura da mensagem para solicitações e respostas HTTP.

Versão HTTP

HTTP usa um <major>.<minor>esquema de numeração para indicar versões do protocolo. A versão de uma mensagem HTTP é indicada por um campo HTTP-Version na primeira linha. Aqui está a sintaxe geral para especificar o número da versão HTTP -

HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT

Example

HTTP/1.0

or

HTTP/1.1

Identificadores Uniformes de Recursos (URI)

O URI é simplesmente uma string formatada, sem distinção entre maiúsculas e minúsculas, contendo nome, localização etc. para identificar um recurso. Por exemplo, o nome de um site, um serviço da web, etc. Uma sintaxe geral de URI usada para HTTP é a seguinte -

URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

Aqui, se o port está vazio ou não fornecido, a porta 80 é assumida para HTTP e um vazio abs_path é equivalente a um abs_pathdo "/". Os outros personagens além daqueles noreserved e unsafe conjuntos são equivalentes à sua codificação ""% "HEX HEX".

Example

Os três URIs a seguir são equivalentes -

http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7esmith/home.html

Formatos de data / hora

Todos os carimbos de data / hora HTTP devem ser representados no horário de Greenwich (GMT), sem exceção. Os aplicativos HTTP têm permissão para usar qualquer uma das três representações de carimbos de data / hora a seguir -

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

Você usa o conjunto de caracteres para especificar os conjuntos de caracteres que o cliente prefere. Vários conjuntos de caracteres podem ser listados separados por vírgulas. Se um valor não for especificado, o padrão é US-ASCII.

Example

Os seguintes conjuntos de caracteres são válidos -

US-ASCII

or

ISO-8859-1

or 

ISO-8859-7

Codificações de conteúdo

Os valores de codificação de conteúdo indicam que um algoritmo de codificação é usado para codificar o conteúdo antes de transmiti-lo pela rede. As codificações de conteúdo são usadas principalmente para permitir que um documento seja compactado ou de outra forma transformado de forma útil sem perder a identidade.

Todos os valores de codificação de conteúdo não diferenciam maiúsculas de minúsculas. HTTP / 1.1 usa valores de codificação de conteúdo nos campos de cabeçalho Accept-Encoding e Content-Encoding.

Example

A seguir estão os esquemas de codificação válidos -

Accept-encoding: gzip

or

Accept-encoding: compress

or 

Accept-encoding: deflate

Tipos de mídia

HTTP usa tipos de mídia da Internet no Content-Type e Acceptcampos de cabeçalho para fornecer digitação de dados aberta e extensível e negociação de tipo. Todos os valores de tipo de mídia são registrados na Internet Assigned Number Authority ((IANA). A seguinte sintaxe geral especifica o tipo de mídia -

media-type = type "/" subtype *( ";" parameter )

Os nomes de atributo de tipo, subtipo e parâmetro não fazem distinção entre maiúsculas e minúsculas.

Example

Accept: image/gif

Tags de linguagem

HTTP usa tags de idioma dentro do Accept-Language e Content-LanguageCampos. Uma tag de idioma é composta por 1 ou mais partes: Uma tag de idioma principal e uma série possivelmente vazia de subtags -

language-tag = primary-tag *( "-" subtag )

O espaço em branco não é permitido na tag e todas as tags não diferenciam maiúsculas de minúsculas.

Example

Tags de exemplo incluem -

en, en-US, en-cockney, i-cherokee, x-pig-latin

Onde qualquer marca primária de duas letras é uma abreviatura de idioma ISO-639 e qualquer subetiqueta inicial de duas letras é um código de país ISO-3166.