Os Métodos de Requisição (HTTP Methods), frequentemente chamados de “Verbos HTTP”, definem a ação técnica que o cliente deseja realizar sobre um recurso identificado por uma URL. Padronizados originalmente na RFC 2616 e expandidos em documentos posteriores, os métodos conferem uma semântica clara e rigorosa à comunicação web, permitindo que servidores e intermediários (proxies/firewalls) compreendam a natureza da transação sem precisar analisar o corpo da mensagem. Dominar a distinção entre métodos seguros, idempotentes e de modificação de estado é essencial para arquitetos de APIs e auditores de segurança cibernética.
1. Classificação Semântica dos Métodos
Para garantir a previsibilidade da rede, os métodos são classificados em duas grandes categorias técnicas:
Métodos Seguros (Safe Methods)
São métodos que, por definição, não causam efeitos colaterais no servidor. Eles são destinados apenas à leitura de dados.
- Exemplos: GET, HEAD, OPTIONS.
- Implicação: Como não alteram dados, o navegador pode realizar estas requisições automaticamente para fins de prefetching ou caching.
Métodos Idempotentes (Idempotent Methods)
Garantem que múltiplas requisições idênticas produzam o mesmo resultado final no servidor que uma única requisição.
- Exemplos: PUT, DELETE, GET.
- Importância: Se uma conexão cair durante uma requisição PUT, o cliente pode retransmiti-la sem o risco de criar dados duplicados. O método POST, ao contrário, não é idempotente (retransmitir um POST pode resultar em duas compras em um cartão de crédito).
2. Os Principais Verbos da Web Moderna
GET
Solicita a representação de um recurso específico. É o método mais usado da Internet. Os parâmetros são enviados visíveis na URL (Query String).
POST
Envia dados para serem processados pelo recurso identificado. É usado para submeter formulários, uploads de arquivos e criações de novos registros em bancos de dados. Os dados viajam no corpo (Body) da mensagem.
PUT e PATCH
- PUT: Substitui integralmente o recurso de destino pelos dados enviados.
- PATCH: Aplica modificações parciais a um recurso existente, economizando banda e processamento.
DELETE
Solicita a remoção permanente de um recurso no servidor de origem.
3. Métodos Auxiliares e de Diagnóstico
- HEAD: Idêntico ao GET, mas o servidor envia apenas os cabeçalhos, sem o corpo. Útil para verificar se um arquivo mudou ou se um link ainda é válido.
- OPTIONS: Retorna quais métodos o servidor suporta para aquele recurso específico (Cabeçalho
Allow). É o motor por trás do mecanismo CORS Preflight.
4. Perspectiva de Cyber Security: Métodos Perigosos
Para um analista de segurança, os métodos HTTP são vetores de ataque que devem ser restringidos.
Riscos do Método TRACE (Cross-Site Tracing - XST)
O método TRACE instrui o servidor a ecoar de volta a requisição exata que recebeu.
- O Perigo: Um atacante pode usar scripts maliciosos para forçar o navegador a enviar uma requisição TRACE. A resposta conterá cabeçalhos sensíveis, incluindo cookies de sessão protegidos por HttpOnly, burlando defesas modernas do navegador.
- Recomendação: Desativar o método TRACE globalmente nas configurações do Apache/Nginx.
Abuso de CONNECT e Cross-Protocol Attacks
O método CONNECT é usado para criar túneis TCP (como para tráfego HTTPS através de um proxy). Se mal configurado, um atacante pode usar o servidor da empresa como um proxy de anonimato para atacar outros sites, escondendo seu IP real atrás da infraestrutura legítima da organização.
5. Auditoria Técnica e Diagnóstico de Métodos
Para verificar quais ações um servidor permite em sua infraestrutura:
# Consultando os métodos permitidos (OPTIONS)
curl -X OPTIONS -v https://www.meuservidor.com
# Testando se métodos perigosos estão ativos (Auditoria de Hardening)
curl -X TRACE -v http://www.alvo.com
Análise de Verbos Não Padronizados: Alguns sistemas (como o WebDAV) utilizam métodos como PROPFIND ou LOCK. Se o seu servidor não utiliza estes serviços, a política de segurança deve bloqueá-los explicitamente para reduzir a superfície de ataque.
6. Conclusão: A Intencionalidade da Ação
Os Métodos de Requisição são a linguagem de comando do HTTP. Eles permitem que a Web seja mais do que uma galeria de imagens, transformando-a em uma plataforma interativa de manipulação de dados em tempo real. Dominique a semântica de cada verbo, implemente restrições rigorosas contra métodos desnecessários e valide a idempotência em suas APIs para garantir que a sua infraestrutura seja lógica, performática e, acima de tudo, resistente a manipulações maliciosas.