HTTP Strict Transport Security (HSTS) é um mecanismo de política de segurança da web que ajuda a proteger sites contra ataques de downgrade de protocolo e sequestro de cookies. Ele permite que servidores da web declarem que navegadores da web (ou outros agentes de usuário em conformidade) devem interagir apenas com ele usando conexões HTTPS seguras e nunca por meio do protocolo HTTP inseguro.
Guia rápido: Implementando HSTS
-
Garanta que seu site seja totalmente acessível via HTTPS.
-
Adicione o cabeçalho Strict-Transport-Security às respostas do seu servidor web:
Segurança de transporte estrita: max-age = 300; includeSubDomains; pré-carga -
Teste sua implementação de HSTS usando ferramentas online e ferramentas de desenvolvedor de navegador.
-
Aumente o valor max-age após confirmar a implementação correta.
-
Considere enviar seu domínio para a lista de pré-carregamento do HSTS para segurança máxima.
Agora, vamos explorar os detalhes do HSTS, seus benefícios e considerações de implementação.
Compreendendo o HSTS em detalhes
Que problema o HSTS resolve?
O HSTS foi desenvolvido para abordar diversas vulnerabilidades de segurança que existem quando sites dependem somente de HTTPS sem proteções adicionais:
- Ataques de remoção de SSL: Um invasor pode interceptar a solicitação HTTP inicial e redirecionar o usuário para uma versão não segura do site.
- Conteúdo Misto: Alguns recursos em uma página ainda podem ser carregados via HTTP, criando vulnerabilidades de segurança.
- Comportamento do usuário: Os usuários podem digitar manualmente “http://” ou omitir o protocolo completamente ao inserir uma URL, expondo-se potencialmente a conexões não seguras.
O HSTS atenua esses problemas forçando todas as conexões a usar HTTPS, mesmo quando um usuário tenta acessar um site via HTTP.
Como funciona o HSTS
Quando um servidor web envia o cabeçalho HSTS em sua resposta, ele instrui o navegador a:
- Converta automaticamente todos os links HTTP inseguros em links HTTPS seguros.
- Impedir que usuários ignorem avisos de certificado.
- Lembre-se desta instrução por um período específico (definido pela diretiva max-age).
Aqui está uma análise dos componentes do cabeçalho HSTS:
- idade máxima: Especifica por quanto tempo (em segundos) o navegador deve se lembrar de forçar o HTTPS.
- incluirSubDomínios: (Opcional) Aplica a política HSTS a todos os subdomínios do domínio atual.
- pré-carga: (Opcional) Indica que o proprietário do domínio consente que seu domínio seja pré-carregado nos navegadores.
Benefícios da implementação do HSTS
- Segurança aprimorada: Protege contra ataques do tipo man-in-the-middle, remoção de SSL e sequestro de cookies.
- Experiência aprimorada do usuário: Redireciona automaticamente solicitações HTTP para HTTPS, reduzindo a latência.
- Benefícios de SEO: Os mecanismos de busca favorecem sites seguros, melhorando potencialmente as classificações de pesquisa.
- Conformidade: Ajuda a atender a vários requisitos regulatórios de proteção de dados e privacidade.
Implementando HSTS em seu servidor web
Etapa 1: Prepare seu site para HTTPS
Antes de implementar o HSTS, certifique-se de que seu site esteja totalmente funcional via HTTPS:
- Obter um SSL/TLS certificado de uma Autoridade de Certificação confiável, como SSL.com.
- Instale o certificado no seu servidor web.
- Configure seu servidor web para usar HTTPS.
- Atualize todos os links internos para usar HTTPS.
- Garanta que todos os recursos externos (scripts, imagens, etc.) sejam carregados via HTTPS.
Etapa 2: adicione o cabeçalho HSTS
Comece adicionando o cabeçalho HSTS com um valor max-age curto para testar sua configuração. Por exemplo, use max-age=300 (5 minutos):
apache
Adicione o seguinte ao seu arquivo .htaccess ou à configuração do servidor:
cabeçalho sempre defina Strict-Transport-Security "max-age=300; includeSubDomains; pré-carregamento"
nginx
Adicione isto ao seu bloco de servidor na configuração do Nginx:
add_header Estrito-Transporte-Segurança "max-age=300; includeSubDomains; pré-carregamento" sempre;
IIS
Para o IIS, você pode adicionar o cabeçalho por meio do arquivo web.config:
<sistema.webServer>
<Protocolo http>
<Cabeçalhos personalizados>
<adicionar nome="Segurança-de-Transporte-Rigorosa" valor="max-age=300; includeSubDomains; pré-carregamento"/>
</Cabeçalhos personalizados>
</Protocolo http>
</sistema.webServer>
Etapa 3: Teste sua implementação HSTS
Depois de adicionar o cabeçalho, é crucial testar sua implementação:
-
Use ferramentas online: Ferramentas como SSL Labs ou Security Headers podem verificar se o cabeçalho HSTS está presente e configurado corretamente.
-
Ferramentas de desenvolvedor de navegador:
-
Abra seu site em um navegador (por exemplo, Chrome ou Firefox).
-
Pressione F12 para abrir as ferramentas do desenvolvedor.
-
Navegue até a aba Rede.
-
Atualize a página e selecione a solicitação inicial (geralmente seu domínio).
-
Procure o cabeçalho Strict-Transport-Security na seção Cabeçalhos para confirmar que ele está sendo enviado.
-
-
Teste a imposição de HTTPS:
-
Tente acessar seu site via http:// e certifique-se de que ele redireciona para https://.
-
Verifique se os subdomínios também estão protegidos se você incluiu a diretiva includeSubDomains.
-
Etapa 4: Aumente o valor max-age
Depois de confirmar que sua implementação HSTS funciona corretamente com uma duração máxima curta, você pode aumentá-la para uma duração maior, como um ano (max-age=31536000):
apache
cabeçalho sempre defina Strict-Transport-Security "max-age=31536000; includeSubDomains; pré-carregamento"
nginx
add_header Estrito-Transporte-Segurança "max-age=31536000; includeSubDomains; pré-carregamento" sempre;
IIS
<sistema.webServer>
<Protocolo http>
<Cabeçalhos personalizados>
<adicionar nome="Segurança-de-Transporte-Rigorosa" valor="max-age=31536000; includeSubDomains; pré-carregamento"/>
</Cabeçalhos personalizados>
</Protocolo http>
</sistema.webServer>
Etapa 5: considere o pré-carregamento HSTS
O pré-carregamento de HSTS oferece uma camada adicional de segurança ao incluir seu domínio em uma lista de sites habilitados para HSTS que é codificada em navegadores. Para pré-carregar seu site:
- Certifique-se de que seu cabeçalho HSTS inclui
preloadna diretiva. - Visite o site de envio da lista de pré-carregamento do HSTS.
- Insira seu domínio e siga o processo de envio.
Observação: o pré-carregamento é uma proteção poderosa, mas pode ser difícil de desfazer. Certifique-se de que seu site esteja pronto para acesso somente HTTPS de longo prazo antes de enviar.
Melhores práticas e considerações
- Comece com uma max-age curta: Comece com um valor menor (por exemplo, max-age=300) e aumente-o gradualmente conforme você confirma que tudo funciona corretamente. Isso evita que os usuários sejam bloqueados se houver uma configuração incorreta.
- Tenha cuidado com includeSubDomains: Certifique-se de que todos os subdomínios estejam prontos para HTTPS antes de usar esta opção.
- Plano de Longo Prazo: Uma vez que o HSTS é implementado, voltar para HTTP pode ser desafiador. Garanta que sua organização esteja comprometida em manter o HTTPS.
- Monitoramento Regular: Monitore continuamente sua configuração HTTPS para garantir que os certificados permaneçam válidos e configurados corretamente.
- Educação do usuário: Embora o HSTS faça muitas coisas automaticamente, eduque seus usuários sobre a importância do HTTPS e fique atento aos avisos de segurança.
Potenciais desafios e soluções
Problemas de conteúdo misto
- Desafio: Alguns recursos ainda estão carregando via HTTP.
- Solução: Use cabeçalhos de Política de Segurança de Conteúdo (CSP) para detectar e relatar conteúdo misto.
Expiração de certificado
- Desafio: Certificados expirados podem bloquear usuários devido a políticas HSTS rígidas.
- Solução: Implementar sistemas automatizados de renovação e monitoramento de certificados.
Complicações do proxy reverso
- Desafio: Os cabeçalhos HSTS podem não ser propagados corretamente por meio de algumas configurações de proxy reverso.
- Solução: Certifique-se de que seu proxy reverso esteja configurado para passar ou definir cabeçalhos HSTS corretamente.
Ambientes de Desenvolvimento e Teste
- Desafio: HSTS pode complicar o acesso a ambientes de desenvolvimento não HTTPS.
- Solução: Use domínios separados para desenvolvimento/preparação que não sejam habilitados para HSTS.
Conclusão
HTTP Strict Transport Security (HSTS) é uma ferramenta poderosa. Ao forçar conexões seguras, o HSTS protege seu site e seus usuários de vários ataques. Embora a implementação exija planejamento e execução cuidadosos, os benefícios de segurança superam em muito as complexidades da configuração inicial.
Lembre-se, a segurança da web é um processo contínuo. Revise e atualize regularmente sua política de HSTS, monitore sua implementação de HTTPS e mantenha-se informado sobre as melhores práticas emergentes de segurança da web para manter seu site e seus usuários seguros.