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.