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>