HTTP Strict Transport Security (HSTS) é um mecanismo de política de segurança que ajuda a proteger sites contra ataques man-in-the-middle como ataques de downgrade de protocolo e sequestro de cookies. Ao impor conexões seguras, o HSTS instrui os navegadores a interagirem apenas com um site usando uma conexão HTTPS segura, em vez de HTTP.
O que é HSTS?
HTTP Strict Transport Security (HSTS) é uma política de segurança da web que permite que sites se declarem acessíveis apenas por meio de conexões HTTPS seguras. Quando um site implementa HSTS, ele informa navegadores que devem utilizar exclusivamente HTTPS para se comunicar com o site, eliminando a possibilidade de utilização do protocolo HTTP menos seguro. Isto é conseguido pelo server enviando um cabeçalho HSTS em suas respostas HTTP, especificando um período durante o qual o navegador deve aplicar esta política.
O HSTS ajuda a prevenir vários ataques, incluindo ataques de downgrade de protocolo, em que um invasor força um navegador a usar HTTP em vez de HTTPS, e sequestro de cookies, em que os cookies são interceptados em conexões não seguras.
Ao obrigar o HTTPS, o HSTS garante que todas as comunicações entre o navegador do usuário e o site sejam criptografada e seguro, melhorando a postura geral de segurança do aplicação web.
Uma breve história do HSTS
O conceito de HTTP Strict Transport Security (HSTS) surgiu da necessidade crescente de melhorar a segurança da web. Foi proposto pela primeira vez em 2009 por Jeff Hodges, Collin Jackson e Adam Barth. Seu trabalho se concentrou em mitigar os riscos associados a ataques man-in-the-middle e ataques de downgrade de protocolo que exploravam as vulnerabilidades do HTTP. O rascunho inicial foi submetido à Internet Engineering Task Force (IETF) em 2010 e, após diversas revisões e comentários da comunidade, tornou-se um padrão em 2012 com a publicação da RFC 6797. Desde então, o HSTS tem sido amplamente adotado pelos principais navegadores da web. e sites, tornando-se uma ferramenta crucial no esforço para proteger as comunicações na web.
Por que o HSTS é importante?
O HSTS é importante porque aumenta significativamente a segurança das comunicações na web. Ao impor o uso de HTTPS, o HSTS garante que todos os dados trocados entre o navegador de um usuário e um site sejam criptografados, protegendo-os contra espionagem e adulteração. Isto é crucial para proteger informações confidenciais, como credenciais de login, dados pessoais e transações financeiras, contra agentes mal-intencionados.
O HSTS também evita ataques de downgrade de protocolo, onde os invasores enganam o navegador para que ele use o HTTP menos seguro, e sequestro de cookies, onde os cookies de sessão são interceptados em uma conexão não segura.
Como funciona o HSTS?
HTTP Strict Transport Security (HSTS) é um mecanismo que garante que um navegador da web sempre use uma conexão HTTPS segura ao se comunicar com um site. Funciona permitindo que os sites se declarem acessíveis apenas via HTTPS, evitando assim vários ataques associados ao protocolo HTTP menos seguro.
Quando um usuário visita pela primeira vez um site compatível com HSTS, o server responde com um cabeçalho HTTP especial chamado Estrito-Transporte-Segurança. Este cabeçalho especifica um idade máxima valor, que indica o período (em segundos) durante o qual o navegador deve impor conexões somente HTTPS para o site. O cabeçalho também pode incluir um incluirSubDomínios directiva, indicando que todos subdomínios também deve ser acessado usando HTTPS.
Assim que o navegador recebe esse cabeçalho, ele registra e começa a aplicar a política HSTS. Se o usuário tentar visitar o site ou seus subdomínios usando HTTP durante o período especificado idade máxima período, o navegador converte automaticamente a solicitação para HTTPS, garantindo uma conexão segura. Mesmo que o usuário digite manualmente "http: //" na barra de endereço do navegador, o navegador irá alterá-lo para "http://" antes de fazer o pedido.
Se a política HSTS incluir subdomínios, esta proteção também se estende a eles, garantindo ainda mais toda a segurança do site. domínio estrutura. Este mecanismo elimina efetivamente oportunidades para invasores interceptarem ou adulterarem a conexão explorando vulnerabilidades HTTP.
Requisitos de HSTS
O HTTP Strict Transport Security tem vários requisitos que devem ser atendidos para que funcione corretamente e proteja eficazmente as comunicações na web. Aqui estão os principais requisitos:
- Implementação HTTPS. O site deve suportar HTTPS e ter uma conta válida SSL / TLS certificado. O HSTS não pode ser implementado em um site que suporta apenas HTTP, pois todo o propósito do HSTS é impor conexões HTTPS seguras.
- Cabeçalho HSTS. O server deve enviar o cabeçalho HSTS (Estrito-Transporte-Segurança) em suas respostas HTTPS. Este cabeçalho inclui o idade máxima diretiva, que especifica por quanto tempo o navegador deve se lembrar de aplicar HTTPS ao site. Um exemplo de cabeçalho HSTS é:
Strict-Transport-Security: max-age=31536000; includeSubDomains
- Diretiva de idade máxima. O idade máxima A diretiva é obrigatória e define a duração em segundos durante a qual o navegador deve impor HTTPS para o site. Por exemplo, max-age = 31536000 define a política por um ano.
- Diretiva IncluiSubDomains. Esta diretiva opcional estende a política HSTS a todos os subdomínios do site. Se incluídos, todos os subdomínios também deverão oferecer suporte a HTTPS.
- Pré-carregamento (opcional, mas recomendado). O pré-carregamento envolve enviar o site para a lista de pré-carregamento HSTS, uma lista mantida pelos fornecedores de navegadores. Depois que um site é pré-carregado, os navegadores aplicarão HTTPS para ele e seus subdomínios desde a primeira visita, mesmo antes de receber o cabeçalho HSTS. Para se qualificar para pré-carregamento, o site deve servir um cabeçalho HSTS com idade máxima de pelo menos um ano (31536000), incluem o incluirSubDomínios directiva e incluem a pré-carga diretiva no cabeçalho.
- Nenhum conteúdo misto. O site deve evitar conteúdo misto, que ocorre quando páginas HTTPS carregam recursos (como imagens, scripts ou folhas de estilo) por HTTP. O conteúdo misto prejudica a segurança do HTTPS e pode fazer com que os navegadores bloqueiem esses recursos ou mostrem avisos de segurança.
- Redirecionamentos. Quaisquer solicitações HTTP para o site devem ser redirecionadas para HTTPS antes da aplicação do HSTS. Isso garante que os usuários que visitam inicialmente o site via HTTP sejam direcionados para a versão segura.
Limitações do HSTS
HTTP Strict Transport Security (HSTS) é um mecanismo de segurança poderoso que vem com algumas limitações, incluindo:
- Conexão insegura inicial. A primeira conexão a um site não é protegida pelo HSTS, deixando-o vulnerável a ataques man-in-the-middle. Até que o navegador receba o cabeçalho HSTS, a conexão poderá ocorrer por HTTP.
- Riscos de configuração incorreta. Configurar incorretamente o HSTS, como definir um tempo muito longo idade máxima para um site que não está pronto para aplicação total de HTTPS pode causar problemas. Outros exemplos de configuração incorreta incluem HTTPS não totalmente implementado ou problemas de conteúdo misto. Se isso ocorrer, os usuários enfrentarão problemas de funcionalidade ou acessibilidade.
- Cobertura de subdomínio. Se o incluirSubDomínios diretiva não for usada, os subdomínios não serão protegidos pela política HSTS. Isto pode deixá-los vulneráveis a ataques, minando os benefícios de segurança do HSTS.
- Acessibilidade do site. Se o certificado SSL/TLS de um site expirar ou estiver configurado incorretamente, os usuários não poderão acessar o site até que o problema seja resolvido, pois o HSTS exige apenas conexões HTTPS.
- Problemas de cache. Assim que um navegador receber um cabeçalho HSTS, ele imporá HTTPS para o site até que o idade máxima o período expira. Se um site não quiser mais usar HTTPS ou alterar sua configuração, os usuários ainda poderão ser forçados a usar HTTPS devido às políticas de HSTS armazenadas em cache.
- Navegadores não suportados. Nem todos os navegadores suportam HSTS. Os usuários com navegadores mais antigos ou menos comuns que não reconhecem o cabeçalho HSTS não se beneficiarão de suas proteções de segurança.
- Desvantagens do pré-carregamento. Embora o pré-carregamento melhore a segurança, é um compromisso. Depois que um site é incluído na lista de pré-carregamento do HSTS, ele não pode ser facilmente removido e quaisquer problemas com HTTPS no site resultam em problemas de acesso significativos para os usuários.
- Impacto no desempenho. Forçar HTTPS introduz uma ligeira sobrecarga de desempenho devido à criptografia e descriptografia processos. Embora geralmente mínimo, pode ser perceptível em sites de alto tráfego ou usuários com conexões mais lentas.
Compatibilidade do navegador HSTS
A tabela a seguir compara a compatibilidade do HSTS com os navegadores mais usados atualmente.
Navegador | Versões Suportadas |
Google Chrome | 4 e posterior |
Mozilla Firefox | 4 e posterior |
Microsoft Edge | 12 e posterior |
apple Safari | 7 e posterior |
Opera | 12 e posterior |
Internet Explorer | Sem suporte |
Melhores práticas de implantação de HSTS
A implantação eficaz do HTTP Strict Transport Security (HSTS) requer o seguimento das práticas recomendadas para garantir uma segurança robusta e minimizar possíveis problemas. Aqui estão algumas práticas recomendadas para implantação de HSTS:
- Garanta suporte total a HTTPS. Antes de ativar o HSTS, certifique-se de que todo o seu site seja compatível com HTTPS, incluindo todos os subdomínios e recursos. O conteúdo misto pode causar problemas quando o HSTS é aplicado.
- Configure SSL/TLS corretamente. Use configurações SSL/TLS fortes para evitar vulnerabilidades. Certifique-se de que seus certificados SSL/TLS sejam válidos, atualizados e instalados corretamente.
- Defina a idade máxima apropriada. Comece com um breve idade máxima valor (por exemplo, um dia) para testar a implementação e garantir que tudo funciona corretamente. Aumente gradualmente o idade máxima para uma duração mais longa (por exemplo, um ano) quando você estiver confiante na configuração.
- Incluir subdomínios. Use o incluirSubDomínios diretiva para garantir que todos os subdomínios sejam cobertos pela política HSTS, fornecendo proteção abrangente em todo o seu domínio.
- Usar pré-carregamento. Envie seu site para a lista de pré-carregamento do HSTS para garantir que os navegadores apliquem o HSTS desde a primeira visita. Isso requer definir um idade máxima de pelo menos um ano, incluindo o incluirSubDomínios directiva e acrescentando a pré-carga diretiva ao seu cabeçalho HSTS.
- Redirecionar HTTP para HTTPS. Configuração server-redirecionamentos laterais de HTTP para HTTPS. Isso garante que os usuários que acessam inicialmente seu site via HTTP sejam redirecionados para a versão segura.
- Monitore e teste. Monitore regularmente seu site em busca de problemas de SSL/TLS, conteúdo misto e outros problemas potenciais. Use ferramentas como o teste SSL do SSL Labs para verificar sua configuração e garantir que ela atenda às práticas recomendadas.
- Atualizar políticas de segurança. Mantenha suas políticas e configurações de segurança, incluindo HSTS, atualizadas regularmente com as recomendações e práticas mais recentes.
- Informar usuários e partes interessadas. Comunique as mudanças aos seus usuários e partes interessadas, explicando os benefícios e potenciais impactos da implementação do HSTS. Isso ajuda a gerenciar as expectativas e garante que quaisquer problemas sejam prontamente relatados e resolvidos.
- Prepare-se para emergências. Tenha um plano para lidar com emergências, como expiração de certificado ou erros de configuração. Você poderá remover seu site da lista de pré-carregamento HSTS, se necessário, embora esse processo possa levar algum tempo devido aos ciclos de atualização do navegador.