Teste de segurança - mensagens HTTP
Mensagens HTTP
O HTTP é baseado no modelo de arquitetura cliente-servidor e um protocolo de solicitação / resposta sem estado que opera trocando mensagens por meio de uma conexão TCP / IP confiável.
Um "cliente" HTTP é um programa (navegador da Web ou qualquer outro cliente) que estabelece uma conexão com um servidor com o objetivo de enviar uma ou mais mensagens de solicitação HTTP. Um "servidor" HTTP é um programa (geralmente um servidor web como o Apache Web Server ou Internet Information Services IIS etc.) que aceita conexões para atender a solicitações HTTP enviando mensagens de resposta HTTP.
O HTTP usa o Uniform Resource Identifier (URI) para identificar um determinado recurso e estabelecer uma conexão. Uma vez que a conexão é estabelecida, as mensagens HTTP são passadas em um formato semelhante ao usado pelo correio da Internet [RFC5322] e pelas Extensões Multifunção para Correio da Internet (MIME) [RFC2045]. Essas mensagens consistem em solicitações de cliente para servidor e respostas de servidor para cliente que terão o seguinte formato -
HTTP-message = <Request> | <Response> ; HTTP/1.1 messages
A solicitação e a resposta HTTP usam um formato de mensagem genérico de RFC 822 para transferir os dados necessários. Este formato de mensagem genérico consiste nos seguintes quatro itens -
Uma linha de partida
Zero ou mais campos de cabeçalho seguidos por CRLF
Uma linha vazia (ou seja, uma linha sem nada antes do CRLF) indicando o final dos campos do cabeçalho
Opcionalmente, um corpo de mensagem
A seção a seguir explicará cada uma das entidades usadas na mensagem HTTP.
Message Start-Line
Uma linha de partida terá a seguinte sintaxe genérica -
start-line = Request-Line | Status-Line
Discutiremos a linha de solicitação e a linha de status enquanto discutimos as mensagens de solicitação e resposta HTTP, respectivamente. Por enquanto, vamos ver os exemplos de linha de partida em caso de solicitação e resposta -
GET /hello.htm HTTP/1.1 (This is Request-Line sent by the client)
HTTP/1.1 200 OK (This is Status-Line sent by the server)
Campos de cabeçalho
Os campos de cabeçalho HTTP fornecem informações necessárias sobre a solicitação ou resposta, ou sobre o objeto enviado no corpo da mensagem. Existem quatro tipos de cabeçalhos de mensagens HTTP a seguir -
General-header - Esses campos de cabeçalho têm aplicabilidade geral para mensagens de solicitação e resposta.
Request-header - Esses campos de cabeçalho são aplicáveis apenas para mensagens de solicitação.
Response-header - Esses campos de cabeçalho são aplicáveis apenas para mensagens de resposta.
Entity-header - Esses campos de cabeçalho definem metainformações sobre o corpo da entidade ou, se nenhum corpo estiver presente.
Todos os cabeçalhos mencionados acima seguem o mesmo formato genérico e cada um dos campos de cabeçalho consiste em um nome seguido por dois pontos (:) e o valor do campo da seguinte forma -
message-header = field-name ":" [ field-value ]
A seguir estão os exemplos de vários campos de cabeçalho -
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
Corpo da mensagem
A parte do corpo da mensagem é opcional para uma mensagem HTTP, mas se estiver disponível, será usada para transportar o corpo da entidade associado à solicitação ou resposta. Se o corpo da entidade estiver associado, geralmenteContent-Type e Content-Length as linhas dos cabeçalhos especificam a natureza do corpo associado.
Um corpo de mensagem é aquele que transporta dados reais de solicitação HTTP (incluindo dados de formulário e upload, etc.) e dados de resposta HTTP do servidor (incluindo arquivos, imagens etc.). A seguir está um conteúdo simples de um corpo de mensagem -
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>