O cabeçalho host HTTP é uma parte crucial de cada solicitação da web. Ele informa ao servidor qual nome de domínio o cliente está tentando acessar. Por exemplo, quando você digita https://www.apidog.com
em seu navegador, o navegador envia uma solicitação com o cabeçalho host Host: www.apidog.com
. Desta forma, o servidor sabe qual site servir a você.
Mas por que isso é importante? E como você pode usá-lo para melhorar sua segurança e desempenho como desenvolvedor web? Este post responde a essas perguntas e mostra algumas melhores práticas e exemplos de como prevenir ataques ao cabeçalho host HTTP. Vamos começar!
O que é o cabeçalho host HTTP?
O cabeçalho host HTTP é um campo padrão de cabeçalho HTTP que é obrigatório para cada solicitação HTTP/1.1. Ele foi introduzido no RFC 2616 para resolver o problema de hospedagem virtual, onde vários sites podem compartilhar o mesmo endereço IP e porta. Sem o cabeçalho host, o servidor não saberia qual site servir e o cliente não saberia qual site exibir.
Aqui está um exemplo de uma solicitação HTTP com o cabeçalho Host:
GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Neste exemplo, o cabeçalho Host
é definido como www.example.com
, o que informa ao servidor que o cliente deseja acessar o site ou aplicação hospedada em www.example.com
.
Os Benefícios do Cabeçalho Host HTTP:
O cabeçalho host é importante por várias razões:
- Permite a hospedagem virtual, o que reduz o custo e a complexidade de hospedar vários sites no mesmo servidor.
- Permite que o servidor aplique diferentes configurações, regras e políticas para diferentes sites, como cache, compressão, redirecionamento, autenticação, etc.
- Ajuda o servidor a gerar URLs precisas e consistentes para o site, como URLs canônicas, URLs absolutas e URLs relativas.
- Ajuda o cliente a verificar a identidade e integridade do site, como verificar o certificado SSL, prevenir spoofing de DNS e evitar conteúdo misto.

Para que serve o Cabeçalho Host?
O principal objetivo do cabeçalho Host HTTP é ajudar a identificar o componente ou aplicação de back-end específico com o qual o cliente deseja se comunicar. Em cenários onde múltiplos sites, aplicações web ou serviços estão hospedados no mesmo endereço IP e servidor, o cabeçalho Host desempenha um papel crucial no roteamento das solicitações de entrada para o destino pretendido.
Sem um cabeçalho Host formatado corretamente, ou se estiver ausente, podem surgir problemas ao tentar direcionar a solicitação para a aplicação correta, levando a possíveis erros de roteamento ou comportamento indesejado.
Como Prevenir Ataques ao Cabeçalho Host HTTP?
O cabeçalho host HTTP pode ser usado para aumentar a segurança do seu site e protegê-lo de vários ataques. Aqui estão algumas dicas sobre como usá-lo para segurança:
Valide o Cabeçalho Host
Você deve sempre validar o cabeçalho host no lado do servidor e rejeitar qualquer solicitação que não corresponda ao seu nome de domínio esperado. Isso pode prevenir ataques de injeção ao cabeçalho host, onde um atacante pode manipular o cabeçalho host para enganar o servidor a realizar ações maliciosas, como enviar informações sensíveis para um domínio diferente, contornar o controle de acesso ou executar código arbitrário. Você pode usar uma lista de permissões ou uma expressão regular para validar o cabeçalho host, dependendo das suas necessidades.
Use HTTPS e HSTS
Você deve sempre usar HTTPS (HTTP Seguro) para criptografar a comunicação entre o cliente e o servidor. Isso pode prevenir escuta, adulteração e ataques de retransmissão. Você também deve usar HSTS (HTTP Strict Transport Security) para forçar o cliente a usar HTTPS e evitar ataques de stripping de SSL, onde um atacante pode reverter a conexão de HTTPS para HTTP e interceptar o tráfego. Você pode usar o cabeçalho Strict-Transport-Security
para habilitar HSTS, como Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
.
Use SNI e SAN
Seria melhor se você usasse SNI (Server Name Indication) e SAN (Subject Alternative Name) para suportar múltiplos certificados SSL no mesmo endereço IP e porta. SNI é uma extensão do protocolo SSL/TLS que permite ao cliente enviar o cabeçalho host durante o handshake SSL, para que o servidor possa escolher o certificado apropriado para o site.
SAN é uma extensão do certificado X.509 que permite que o certificado inclua múltiplos nomes de domínio ou endereços IP para que o cliente possa verificar o certificado em relação ao cabeçalho host. Você pode usar ferramentas como OpenSSL ou Let’s Encrypt para gerar e gerenciar seus certificados SSL com SNI e SAN.

Como Usar o Cabeçalho Host HTTP para Desempenho
O cabeçalho host HTTP também pode ser usado para melhorar o desempenho do seu site e otimizá-lo para velocidade e escalabilidade. Aqui estão algumas dicas de como usá-lo para desempenho:
Use CDN e DNS.
Você deve usar CDN (Content Delivery Network) e DNS (Domain Name System) para distribuir o conteúdo do seu site por vários servidores e locais, e para resolver o seu nome de domínio para o servidor mais próximo. Isso pode reduzir a latência, largura de banda e carga no seu servidor de origem, melhorando a experiência do usuário e a disponibilidade do seu site. Você pode usar serviços como Cloudflare, AWS CloudFront ou Google Cloud CDN para configurar seu CDN e DNS.
Use HTTP/2 e ALPN.
Você deve usar HTTP/2 e ALPN (Application-Layer Protocol Negotiation) para atualizar seu protocolo HTTP e habilitar multiplexação, compressão, priorização e push do servidor. HTTP/2 é uma versão mais nova do HTTP que permite que várias solicitações e respostas sejam enviadas por uma única conexão TCP, reduzindo a sobrecarga e a congestão do HTTP/1.1. ALPN é uma extensão do protocolo SSL/TLS que permite ao cliente e ao servidor negociar o melhor protocolo para a conexão, como HTTP/2 ou HTTP/1.1. Você pode usar os cabeçalhos Upgrade
e ALPN
para habilitar HTTP/2 e ALPN, como Upgrade: h2c
e ALPN: h2
.
Use Cache e Compressão.
Você deve usar cache e compressão para reduzir o tamanho e a frequência do conteúdo do seu site, e para melhorar o tempo de resposta e o uso de largura de banda. O cache é uma técnica que permite que o cliente ou o servidor armazenem e reutilizem o conteúdo do site, como HTML, CSS, JS, imagens, etc., sem solicitá-lo novamente.
A compressão é uma técnica que permite que o servidor reduza o tamanho do conteúdo do site removendo dados desnecessários ou redundantes, como espaços em branco, comentários, etc. Você pode usar os cabeçalhos Cache-Control
, Expires
, ETag
e Last-Modified
para controlar o comportamento de cache, e os cabeçalhos Content-Encoding
, Accept-Encoding
e Vary
para habilitar a compressão, como Cache-Control: public, max-age=86400
, Content-Encoding: gzip
e Vary: Accept-Encoding
.
Como Usar o Cabeçalho Host HTTP com apidog
Apidog é uma ferramenta poderosa e fácil de usar que ajuda você a projetar, testar e documentar suas APIs. Ele suporta várias funcionalidades que tornam seu desenvolvimento de API mais rápido e suave, como servidores simulados, geradores de código, colaboração, etc.
Você pode usar o cabeçalho host HTTP para testar e depurar suas APIs no apidog. Você pode usar o testador de API embutido para enviar solicitações para os endpoints da sua API e ver as respostas e logs em tempo real.
- Clique no botão "Nova Solicitação".

2. Selecione o método HTTP que deseja usar e insira a URL da API que deseja acessar.

3. Clique na aba "Cabeçalhos" e adicione o cabeçalho de autorização HTTP e Auth para modificar seu tipo de autorização.


4. Clique no botão "Enviar" e verifique o código de status da resposta, cabeçalhos e corpo. Se o token for válido, o código de status deve ser 200 (OK) e o corpo deve conter o recurso solicitado. Se o token for inválido, o código de status deve ser 401 (Não autorizado) ou 403 (Proibido) e o corpo deve conter uma mensagem de erro.

Conclusão
O cabeçalho host HTTP é uma ferramenta poderosa e versátil que pode ajudar você a melhorar sua segurança e desempenho como desenvolvedor web. Ele também pode ajudar você a criar, gerenciar, testar e documentar suas APIs com Apidog.
Neste post, mostrei algumas melhores práticas e exemplos de como usar o cabeçalho host HTTP de forma eficaz. Espero que você tenha aprendido algo novo e útil com este post no blog. Obrigado por ler!
