MÓDULO 0 — Fundamentos de HTTP e Web: Entendendo o HTTP e HTTPS
Team Hacking78
Especialistas em Red Teaming
Resumo Executivo (TL;DR)
Entenda o funcionamento do protocolo HTTP, o ciclo requisição-resposta, verbos HTTP na prática, códigos de status, cabeçalhos cruciais e como o TLS/HTTPS garante confidencialidade, integridade e autenticidade.

O HTTP (Hypertext Transfer Protocol) é um protocolo da camada de aplicação utilizado para a transferência de dados na web. Ele opera em um modelo cliente-servidor, sendo um protocolo stateless (sem estado), o que significa que cada requisição é tratada de forma independente pelo servidor.
Neste Módulo 0, abordamos os conceitos fundamentais sobre como a comunicação web funciona, desde a troca de pacotes básica até os mecanismos de criptografia com TLS/HTTPS.
1. O Ciclo Requisição-Resposta
O ciclo básico de comunicação na web segue três etapas principais:
- 1. Estabelecimento de Conexão: O cliente (geralmente um navegador) abre uma conexão TCP/IP com o servidor (usualmente na porta 80 para HTTP ou 443 para HTTPS).
- 2. Requisição HTTP (Request): O cliente envia uma mensagem estruturada contendo um método, um caminho (path), cabeçalhos (headers) e, opcionalmente, um corpo (body).
- 3. Resposta HTTP (Response): O servidor processa o pedido e retorna um código de status, cabeçalhos de resposta e o corpo (dados como HTML, JSON ou imagens). A conexão pode ser encerrada ou mantida aberta (keep-alive).
2. Métodos HTTP e Exemplos Práticos
Os métodos HTTP (ou verbos) indicam a ação que o cliente deseja realizar no recurso especificado:
- GET: Solicita a representação de um recurso. Não deve alterar o estado do servidor nem enviar dados no corpo.
- POST: Envia dados para o servidor criar um novo recurso ou processar informações (ex: formulários, login).
- PUT: Substitui completamente um recurso existente pelos dados enviados na requisição.
- PATCH: Aplica modificações parciais a um recurso existente.
- DELETE: Remove um recurso específico do servidor.
- OPTIONS: Retorna os métodos HTTP suportados pelo servidor para a URL solicitada (usado em checagens de CORS).
Exemplos de Requisição e Resposta
GET — Buscar um usuário
GET /api/v1/users/42 HTTP/1.1
Host: api.exemplo.com
User-Agent: Mozilla/5.0
Accept: application/json// Resposta do Servidor: HTTP/1.1 200 OK
{
"id": 42,
"nome": "Ana Silva",
"email": "ana@exemplo.com"
}POST — Criar um usuário
POST /api/v1/users HTTP/1.1
Host: api.exemplo.com
Content-Type: application/json
Content-Length: 52{
"nome": "Carlos Souza",
"email": "carlos@exemplo.com"
}PUT vs PATCH — Atualizar recurso
- PUT (substituição total):
PUT /api/v1/users/42 HTTP/1.1
Host: api.exemplo.com
Content-Type: application/json{
"nome": "Ana Silva",
"email": "ana.nova@exemplo.com"
}- PATCH (atualização parcial):
PATCH /api/v1/users/42 HTTP/1.1
Host: api.exemplo.com
Content-Type: application/json{
"email": "ana.nova@exemplo.com"
}DELETE — Deletar recurso
DELETE /api/v1/users/42 HTTP/1.1
Host: api.exemplo.com
Authorization: Bearer token_exemplo_123OPTIONS — Verificar métodos permitidos
OPTIONS /api/v1/users HTTP/1.1
Host: api.exemplo.com// Resposta do Servidor: HTTP/1.1 204 No Content
Allow: GET, POST, OPTIONS3. Códigos de Status (Status Codes)
Os códigos de status indicam o resultado do processamento da requisição e são divididos em 5 classes principais:
- 1xx (Informativo): A requisição foi recebida e o processo continua (ex:
100 Continue). - 2xx (Sucesso): A ação foi recebida, entendida e aceita com êxito (ex:
200 OK,201 Created,204 No Content). - 3xx (Redirecionamento): Ações adicionais são necessárias para completar a requisição (ex:
301 Moved Permanently,302 Found). - 4xx (Erro do Cliente): A requisição contém sintaxe incorreta ou não pode ser processada (ex:
400 Bad Request,401 Unauthorized,403 Forbidden,404 Not Found). - 5xx (Erro do Servidor): O servidor falhou ao processar uma requisição válida (ex:
500 Internal Server Error,502 Bad Gateway,503 Service Unavailable).
4. Cabeçalhos Importantes (Headers)
Os cabeçalhos transmitem metadados essenciais sobre a requisição ou a resposta:
- Host: Obrigatório no HTTP/1.1. Indica o nome do domínio de destino (essencial para servidores virtuais hospedando múltiplos sites na mesma IP).
- Cookie: Envia ao servidor os cookies armazenados localmente associados ao domínio (geralmente contendo identificadores de sessão).
- User-Agent: Identifica a aplicação, navegador, sistema operacional e versão de quem está fazendo a requisição.
- Content-Type: Indica o formato do corpo da mensagem (ex:
application/json,text/html,multipart/form-data). - Authorization: Transporta credenciais para autenticação (ex:
Authorization: BearerouAuthorization: Basic).
5. HTTP vs HTTPS & Como o TLS Funciona
- HTTP: Transmite dados em texto claro (porta 80). Qualquer pessoa no caminho da rede pode interceptar e ler o tráfego (ataque Man-in-the-Middle / MitM).
- HTTPS: É o HTTP rodando sobre uma camada de criptografia fornecida pelo TLS (Transport Layer Security) (porta 443). Garante três pilares:
- 1. Confidencialidade: Tráfego criptografado.
- 2. Integridade: Garante que os dados não foram alterados no trajeto.
- 3. Autenticidade: Valida a identidade do servidor via certificados digitais.
Como o TLS Funciona (Simplificado — TLS Handshake)
Cliente Servidor
| |
| ------------- 1. Client Hello ---------------> | (Versões TLS, ciphers suportados)
| <------------ 2. Server Hello --------------- | (Cipher escolhido + Certificado Digital)
| |
| [ Valida Certificado / CA ] |
| |
| ------------- 3. Troca de Chaves -----------> | (Estabelece segredo compartilhado)
| |
| ===== 4. Canal Criptografado Estabelecido ===== | (Troca de chaves simétricas de sessão)- 1. Client Hello: O cliente informa as versões de TLS e os algoritmos criptográficos (cipher suites) que suporta.
- 2. Server Hello + Certificado: O servidor escolhe o algoritmo e envia seu certificado digital público (assinado por uma Autoridade Certificadora / CA).
- 3. Validação & Troca de Chaves: O cliente verifica se o certificado é válido. Em seguida, ambos utilizam criptografia assimétrica (chaves pública/privada) para negociar uma chave simétrica de sessão.
- 4. Comunicação Simétrica: A partir desse ponto, todo o tráfego é criptografado usando essa chave simétrica (muito mais rápida para processamento).
Perguntas Frequentes (FAQ)
O que é o protocolo HTTP e qual seu modo de operação?
O HTTP (Hypertext Transfer Protocol) é um protocolo da camada de aplicação utilizado para a transferência de dados na web. Ele opera em um modelo cliente-servidor e é stateless (sem estado), onde cada requisição é tratada de forma independente pelo servidor.
Qual a diferença entre os métodos PUT e PATCH no HTTP?
O método PUT realiza a substituição total de um recurso existente pelos dados enviados na requisição, enquanto o PATCH aplica modificações parciais a um recurso.
Como o TLS/HTTPS protege a comunicação entre cliente e servidor?
O HTTPS executa o HTTP sobre uma camada criptográfica TLS/SSL na porta 443, garantindo confidencialidade (criptografia), integridade (dados não alterados) e autenticidade (validação via certificados digitais).
