Teste de segurança - respostas HTTP

Respostas HTTP

Depois de receber e interpretar uma mensagem de solicitação, um servidor responde com uma mensagem de resposta HTTP -

  • Uma linha de status

  • Zero ou mais campos de cabeçalho (Geral | Resposta | Entidade) 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 explica cada uma das entidades usadas em uma mensagem HTTP -

Linha de status da mensagem

A linha de status consiste na versão do protocolo seguida por um código de status numérico e sua frase textual associada. Os elementos são separados por caracteres de espaço SP.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Vamos discutir cada uma das partes mencionadas em Status-Line.

Versão HTTP

Um servidor com suporte para HTTP versão 1.1 retorna as seguintes informações de versão -

HTTP-Version = HTTP/1.1

Código de Status

O elemento Status-Code é um número inteiro de 3 dígitos onde o primeiro dígito do Status-Code define a classe de resposta e os dois últimos dígitos não têm qualquer função de categorização. Existem cinco valores para o primeiro dígito -

S.No. Valor e Descrição
1

1xx: Informational

Isso significa solicitação recebida e processo contínuo.

2

2xx: Success

Isso significa que a ação foi recebida, compreendida e aceita com sucesso.

3

3xx: Redirection

Isso significa que outras ações devem ser tomadas para concluir a solicitação.

4

4xx: Client Error

Isso significa que a solicitação contém sintaxe incorreta ou não pode ser atendida

5

5xx: Server Error

O servidor falhou em cumprir um pedido aparentemente válido

Os códigos de status HTTP são extensíveis e os aplicativos HTTP não são necessários para compreender o significado de todos os códigos de status registrados.

Campos de cabeçalho de resposta

Os campos de cabeçalho de resposta permitem que o servidor passe informações adicionais sobre a resposta que não podem ser colocadas na linha de status. Esses campos de cabeçalho fornecem informações sobre o servidor e sobre o acesso posterior ao recurso identificado pelo Request-URI.

  • Accept-Ranges
  • Age
  • ETag
  • Location
  • Proxy-Authenticate
  • Retry-After
  • Server
  • Vary
  • WWW-Authenticate

Você pode introduzir seus campos personalizados no caso de desejar escrever seu próprio cliente e servidor Web personalizados.

Exemplos de mensagens de resposta

Agora vamos juntar tudo para formar uma resposta HTTP para uma solicitação de busca hello.htm página do servidor da web em execução em tutorialspoint.com

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed

<html>
   <body>
      <h1>Hello, World!</h1>
   </body>
</html>

A seguir está um exemplo de mensagem de resposta HTTP que mostra condição de erro quando o servidor da web não conseguiu encontrar uma página solicitada -

HTTP/1.1 404 Not Found
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Connection: Closed
Content-Type: text/html; charset = iso-8859-1
   
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
   <head>
      <title>404 Not Found</title>
   </head>

   <body>
      <h1>Not Found</h1>
      <p>The requested URL /t.html was not found on this server.</p>
   </body>
</html>

A seguir está um exemplo de mensagem de resposta HTTP mostrando condição de erro quando o servidor da web encontrou uma versão HTTP errada em uma determinada solicitação HTTP -

HTTP/1.1 400 Bad Request
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset = iso-8859-1
Connection: Closed
   
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
   <head>
      <title>400 Bad Request</title>
   </head>
   
   <body>
      <h1>Bad Request</h1>
      <p>Your browser sent a request that this server could not understand.<p>
      <p>The request line contained invalid characters following the protocol string.<p>
   </body>
</html>