[WEB] Protocolo HTTP
0
0

[WEB] Protocolo HTTP

Breve explicação sobre o protocolo HTTP

Nathalia Peres
5 min
0
0
Email image

Função de um protocolo

Quando nos referimos a protocolo em tecnologia da informação, estamos nos referindo a padrões e regulamentos pré-definidos para que, neste caso, uma comunicação seja estabelecida. Protocolo, portanto, nada mais é do que a forma como as aplicações, redes, computadores, etc, se comunicam. Em uma representação, isso seria uma linguagem. Um individuo que só compreenda português só irá entender a mensagem de outra pessoa que também entenda e fale português. Caso contrário, a comunicação não irá funcionar.

Definição de HTTP

O HTTP (Hipertext Transfer Prototocol) é um protocolo cliente-servidor para transferência de arquivos pela Internet. Quando o usuário digita o endereço de um site (URL), o navegador realiza a requisição e o servidor responde com os arquivos necessários para exibição da página solicitada. Nesse processo, o HTTP é utilizado.

URL

A URL (Uniform Resource Locator) é o endereço para um recurso na internet. Para que uma URL seja formada, ela é composta por alguns parâmetros, conforme imagem:

Email image

Fonte:Mozilla

  • Scheme: Protocolo a ser usado na conexão, neste caso é o HTTP. Poderia ser HTTPS, FTP, etc.
  • Domain Name: Endereço onde o recurso solicitado está localizado. Pode ser informado como um nome ou endereço de IP.
  • Port: Pode ser que o recurso solicitado não esteja se comunicando na porta padrão. Neste caso, é necessário informar na URL a porta correta de comunicação.
  • Path: Diretório do recurso solicitado. Quando não informado, trata-se do diretório raiz.
  • Parameters: Valores, ou parâmetros, que devem ser repassados na URL para solicitar um recurso especifico, por exemplohttp://site.com/id=2.
  • Anchor: Quando especificado em uma página, nos redireciona direto para a seção informada, por exemplo:http://site.com/quem-somos/#sobre

Cabeçalho HTTP

Vamos pensar no cabeçalho HTTP como um formulário que possui inúmeros campos que podem ser preenchidos, de acordo com a necessidade de cada requisição ou resposta, do browser ou aplicação respectivamente. Uma lista completa dessas opções pode ser encontrada neste link.

Vou tentar apresentar algumas dessas opções mostrando o HTTP Request e HTTP Response. Para isso utilizei de alguns “laboratórios” disponibilizados pela da Portswigger e o Burp Suite, ferramenta também desenvolvida por eles.

HTTP REQUEST

Email image

Existe várias formas de realizar uma requisição para o servidor. No HTTP essas formas são chamadas de HTTP Verbs, ações ou métodos. A documentação completa pode ser encontrada neste link. Vou apresentar os principais, sendo eles o Get e o Post.

GET

Essa ação realiza uma solicitação de um recurso localizado no servidor onde o retorno desse pedido são os dados. Essa solicitação pode ser uma página, um arquivo, uma imagem, etc. Por exemplo, ao solicitar a página https://ac451fa81f07575bc03927fd00f3007f.web-security-academy.net/login a seguinte requisição é enviada para o servidor. Note que os principais parametros enviados são:

  • O método Get
  • O diretório do recurso solicitado, neste caso /login
  • A versão do protocolo HTTP utilizada
  • O host, sendo a própria URL
  • User-agent, sendo a aplicação que realiza a requisição, neste caso o navegador Chromium. Uma lista com as principais informações mostradas por User-Agent pode ser encontrada aqui neste link
Email image

O Get também pode enviar dados para o servidor, como por exemplo o envio de informações através de um formulário. Entretanto, por questões de segurança, esse uso não é recomendado, uma vez que, os parâmetros são enviados na própria URL. Utilizei um formulário de login como exemplo. No campo de usuário e senha, digitei ‘admin’ e ‘admin’.

Email image

Ao enviar as credenciais via Get, as mesmas são enviadas diretamente na URL expondo completamente o usuário e senha informado. Por isso, a ação indicada neste caso é o Post.

Email image

POST

Como mencionado anteriormente, a ação POST envia dados para o servidor, porém, a principal diferença com o método Get é que o Post envia toda informação na requisição HTTP, fazendo com que a URL não seja modificada.

Email image

HTTP RESPONSE

Email image

Quando falamos com alguém, sempre esperamos uma resposta como retorno, nem que seja um “Oi, não entendi”. No HTTP funciona da mesma forma. Quando uma requisição é realizada, sempre haverá uma resposta como retorno. Pode ser o contéudo da página em si ou uma devolução sobre o porque o recurso não foi disponibilizado. Essa devolução é conhecida como status code.

STATUS CODE

São padrões para a resposta dos servidores ao informar sobre o recurso requisitado. Existem inúmeras respostas e cada uma delas possui um código. Abaixo os status mais conhecidos:

  • 200 OK : O recurso existe e está disponível.
  • 301 Moved Permanently: O recurso foi movido ou está sendo redirecionado.
  • 401 Unauthorized: O recurso precisa de autenticação para ser acessado.
  • 403 Forbbiden: O recurso não pode ser acessado pelo usuário devido a permissão ou precisa de autenticação para ser acessado.
  • 404 Not Found: O recurso não foi encontrado ou não existe.
  • 500: O servidor não conseguiu atender a requisição, normalmente ligado a erro no servidor.

Se analisarmos resposta da requisição Get feita anteriormente veremos que foi retornado um status code

Email image

Se na mesma URL eu solicitar um recurso que não existe será retornado outro status code

Email image

Uma lista com todos os status code pode ser encontrada neste link HTTP Status code

O protocolo HTTP é extenso e possui diversas funcionalidades e opções que podem ser exploradas, estudadas e utilizadas. Aqui tentei exemplificar um pouco como funciona os principais elementos. :)

Para uma análise mais profunda do assunto, recomendo a documentação que pode ser encontrada no site da Mozilla