Teste de segurança - solicitação HTTP

Solicitações HTTP

Um cliente HTTP envia uma solicitação HTTP a um servidor na forma de uma mensagem de solicitação que inclui o seguinte formato -

  • Uma linha de solicitação

  • Zero ou mais campos de cabeçalho (Geral | Solicitação | Entidade) seguidos por CRLF

  • Uma linha vazia (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 na mensagem HTTP.

Linha de Solicitação de Mensagem

O Request-Line começa com um token de método, seguido pelo Request-URI, a versão do protocolo e termina com CRLF. Os elementos são separados por caracteres de espaço SP.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

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

Métodos de Solicitação

O pedido Method indica o método executado no recurso identificado pelo determinado Request-URI. O método diferencia maiúsculas de minúsculas e sempre deve ser mencionado em maiúsculas. Os seguintes métodos são suportados em HTTP / 1.1 -

S.No. Método e Descrição
1

GET

Ele é usado para recuperar informações de um determinado servidor usando um determinado URI. As solicitações que usam GET devem recuperar apenas dados e não devem ter nenhum outro efeito sobre os dados.

2

HEAD

É o mesmo que GET, mas apenas transfere a linha de status e a seção de cabeçalho.

3

POST

É usado para enviar dados ao servidor. Por exemplo, informações do cliente, upload de arquivo, etc. usando formulários HTML.

4

PUT

Ele substitui todas as representações atuais do recurso de destino com o conteúdo carregado.

5

DELETE

Ele remove todas as representações atuais do recurso de destino fornecido pelo URI.

6

CONNECT

Ele estabelece um túnel para o servidor identificado por um determinado URI.

7

OPTIONS

Ele descreve as opções de comunicação para o recurso de destino.

8

TRACE

Ele executa um teste de loopback de mensagem ao longo do caminho para o recurso de destino.

Request-URI

O Request-URI é um Uniform Resource Identifier que identifica o recurso no qual uma solicitação deve ser aplicada. A seguir estão os formulários mais comumente usados ​​para especificar um URI -

Request-URI = "*" | absoluteURI | abs_path | authority
S.No. Método e Descrição
1

O asterisco *é usado quando a solicitação HTTP não se aplica a um recurso específico, mas ao próprio servidor. Só é permitido quando o método não se aplica necessariamente a um recurso. Por exemplo, OPTIONS * HTTP/1.1

2

o absoluteURIé usado quando a solicitação HTTP está sendo feita para um proxy. O proxy é solicitado para encaminhar a solicitação ou serviço de um cache válido e retornar a resposta. Por exemplo,GET https://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3

A forma mais comum de Request-URI é aquela usada para identificar um recurso em um servidor ou gateway de origem. Por exemplo, um cliente que deseja recuperar o recurso acima diretamente do servidor de origem criaria uma conexão TCP para a porta 80 do host "www.w3.org" e enviaria as linhas -

GET /pub/WWW/TheProject.html HTTP/1.1

Host: https://www.w3.org/

Note- O caminho absoluto não pode estar vazio. Se nenhum estiver presente no URI original, ele deve ser fornecido como "/" (a raiz do servidor)

Solicitar campos de cabeçalho

Os campos do cabeçalho da solicitação permitem que o cliente passe informações adicionais sobre a solicitação e sobre o próprio cliente para o servidor. Esses campos atuam como modificadores de solicitação e os seguintes campos importantes de cabeçalho de solicitação estão disponíveis, os quais podem ser usados ​​com base no requisito -

  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Authorization
  • Expect
  • From
  • Host
  • If-Match
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • If-Unmodified-Since
  • Max-Forwards
  • Proxy-Authorization
  • Range
  • Referer
  • TE
  • User-Agent

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

Exemplos de mensagens de solicitação

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

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Aqui, não estamos enviando dados de solicitação para o servidor porque estamos obtendo uma página HTML do plano do servidor. Conexão é um cabeçalho geral e todos os cabeçalhos são cabeçalhos de solicitação. A seguir está outro exemplo em que enviamos dados do formulário para o servidor usando o corpo da mensagem de solicitação -

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

licenseID = string&content = string&/paramsXML = string

Aqui, o URL fornecido /cgi-bin/process.cgi é usado para processar os dados passados ​​e, portanto, uma resposta é ajustada novamente. ocontent-type diz ao servidor que os dados transmitidos são dados simples de formulário da web e lengthé o comprimento real dos dados colocados no corpo da mensagem. O exemplo a seguir mostra como você pode passar XML do plano para o seu servidor web -

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset = utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<?xml version = "1.0" encoding = "utf-8"?>
<string xmlns = "http://clearforest.com/">string</string>