Segurança de site não começa com antivírus nem com plugin. Começa com o transporte: como os dados viajam entre o navegador e o servidor, e quais instruções o seu servidor manda junto com cada página. Essa camada é gratuita, leva pouco tempo para configurar e resolve uma quantidade grande de problemas de uma vez.
Por que ainda existe site em HTTP e por que isso é problema
Sites em HTTP ainda existem por inércia. Foram publicados quando certificado custava caro, e ninguém mexeu depois. O problema é que, sem HTTPS, tudo trafega em texto aberto. Qualquer ponto intermediário da rede, um roteador de rede pública, um provedor mal configurado, consegue ler e alterar o conteúdo em trânsito.
Isso não afeta só quem preenche formulário. Afeta a integridade da página inteira: em uma conexão HTTP, é tecnicamente possível injetar código na página antes de ela chegar ao visitante. E, do lado prático, os navegadores modernos marcam o site como não seguro na barra de endereço, o que qualquer visitante vê e interpreta como abandono.
Existe ainda um caso intermediário e traiçoeiro: o conteúdo misto. É o site que tem certificado, mas ainda carrega uma imagem, um script ou uma folha de estilo por HTTP. O navegador bloqueia parte desses recursos e o cadeado some. Depois de migrar, procure por referências http:// ao seu próprio domínio dentro do código.
Certificado SSL gratuito vs pago: a diferença real
A criptografia é a mesma. Um certificado gratuito do Let's Encrypt protege a conexão exatamente com a mesma força de um certificado caro. O que muda é o nível de validação e o que vem junto:
- Validação de domínio (DV): prova que quem pediu controla o domínio. É o que os certificados gratuitos fazem, e é o suficiente para a esmagadora maioria dos sites.
- Validação de organização (OV) e validação estendida (EV): a autoridade certificadora verifica documentos da empresa. Os navegadores atuais não dão mais destaque visual a isso, então o benefício prático é pequeno para um site comum.
- Curinga (wildcard): cobre todos os subdomínios de uma vez. Útil quando você tem muitos.
Os certificados do Let's Encrypt duram 90 dias e são renovados automaticamente. Essa é justamente a pegadinha: se a renovação automática não estiver funcionando, o site quebra de repente três meses depois. Coloque um lembrete e um monitor de expiração, tema que também aparece em backup e continuidade.
Forçar HTTPS sem quebrar o SEO
Ter certificado não basta se a versão HTTP continua respondendo. Você precisa de um redirecionamento permanente, com status 301, de HTTP para HTTPS.
Por que 301 e nunca 302? Porque 301 significa movido permanentemente e transfere o peso do endereço antigo para o novo. O 302 significa movido temporariamente e sinaliza ao buscador que o endereço original continua sendo o oficial. Usar 302 numa migração de protocolo é pedir para o site ficar meses com as duas versões disputando entre si.
Depois do redirect, faça três coisas: atualize a propriedade no Search Console para a versão HTTPS, atualize as URLs do sitemap e confira se os links internos e as tags canonical apontam para https:// direto, sem passar pelo redirecionamento. Cada salto extra é tempo perdido em cada acesso.
Cuidado com correntes de redirecionamento. É comum um site acumular saltos assim: HTTP sem www vai para HTTP com www, que vai para HTTPS com www, que vai para HTTPS sem www. São três redirecionamentos onde deveria haver um. Escolha uma única versão canônica do endereço e mande todas as outras direto para ela, em um salto só.
HSTS e a lista de preload
Mesmo com redirect, a primeira requisição ainda sai em HTTP antes de ser redirecionada, e essa janela pode ser explorada. O HSTS fecha essa brecha. O cabeçalho instrui o navegador a nunca mais tentar HTTP nesse domínio, convertendo internamente qualquer tentativa para HTTPS.
O cabeçalho completo, com todas as diretivas:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Traduzindo cada parte:
max-age=31536000: um ano em segundos. É o período em que o navegador vai lembrar dessa regra.includeSubDomains: aplica a regra a todos os subdomínios.preload: sinaliza intenção de entrar na lista de preload dos navegadores, que já vem embutida no programa e protege até a primeiríssima visita.
O risco aqui é real e vale dizer com clareza: HSTS é difícil de desfazer. Se um subdomínio seu não tem certificado válido e você ativa includeSubDomains, ele fica inacessível até você corrigir, e os navegadores que já guardaram a regra continuarão recusando por até um ano. Entrar na lista de preload é mais difícil ainda de reverter. Comece com um max-age curto, confirme que tudo funciona em HTTPS, incluindo subdomínios, e só então aumente para um ano e adicione o preload. Neste site rodamos hoje max-age=15552000; includeSubDomains — 180 dias, sem preload — exatamente por essa razão.
Content-Security-Policy sem quebrar o site
O CSP define de onde a página pode carregar scripts, estilos, imagens, fontes e quadros. É o cabeçalho mais poderoso da lista e também o mais fácil de errar: uma política mal escrita bloqueia recursos legítimos e o site aparece quebrado.
Por isso o CSP tem um modo de teste. Use primeiro Content-Security-Policy-Report-Only, que não bloqueia nada e apenas registra o que seria bloqueado. Rode assim por alguns dias, ajuste a lista de origens permitidas com base no que aparecer, e só então troque para o cabeçalho que bloqueia de fato.
Duas armadilhas comuns: usar unsafe-inline em script-src anula boa parte da proteção contra injeção de script, e esquecer as origens de analytics, fontes e mapas incorporados derruba funcionalidades que você nem lembrava que existiam.
Se você quer um ganho rápido com risco baixo antes de encarar a política completa, comece por duas diretivas isoladas. A primeira é frame-ancestors, que faz o mesmo trabalho do X-Frame-Options com mais controle. A segunda é upgrade-insecure-requests, que converte para HTTPS as requisições internas que ainda apontam para HTTP e resolve boa parte dos casos de conteúdo misto sem precisar caçar cada referência no código.
X-Frame-Options e X-Content-Type-Options
X-Frame-Options: DENY impede que o seu site seja carregado dentro de um quadro em outra página. Isso bloqueia clickjacking, o golpe em que alguém coloca o seu site invisível sobre outra interface para roubar cliques. Os valores possíveis são DENY, que proíbe qualquer incorporação, e SAMEORIGIN, que permite só dentro do próprio domínio. Se o seu site precisa ser incorporado em algum lugar legítimo, use SAMEORIGIN; caso contrário, DENY é a escolha correta.
X-Content-Type-Options: nosniff impede que o navegador tente adivinhar o tipo de um arquivo diferente do que o servidor declarou. Sem ele, um arquivo enviado por um usuário e servido como texto pode acabar interpretado como script. Esse cabeçalho tem um único valor válido, nosniff, não tem efeito colateral e deveria estar em todo site.
Referrer-Policy e Permissions-Policy
Referrer-Policy: strict-origin-when-cross-origin controla quanto da URL de origem é enviado quando alguém sai do seu site por um link. Com esse valor, uma navegação dentro do próprio site envia a URL completa; uma saída para outro domínio envia apenas o domínio, sem caminho nem parâmetros; e uma saída de HTTPS para HTTP não envia nada. É o equilíbrio certo: preserva atribuição de tráfego sem vazar caminhos internos.
Permissions-Policy desliga recursos do navegador que a sua página não usa, como câmera, microfone e geolocalização. Declarar uma lista vazia para esses recursos garante que nem a sua página nem um script de terceiro embutido nela consiga pedi-los.
Como testar em securityheaders.com
Coloque a URL do site em securityheaders.com e você recebe uma nota com a lista do que está presente e do que falta. Use como lista de tarefas, não como troféu. Um site pode tirar nota alta ali e ainda ter um formulário sem validação.
Complemente com o teste de SSL do SSL Labs, que avalia certificado, versões de protocolo e cifras aceitas, e com o console do navegador, que denuncia conteúdo misto e violações de CSP. Depois de configurar, teste de novo cada mudança em produção antes de considerar encerrado, e inclua essa verificação na rotina de manutenção. A parte de HTTPS também aparece como item do checklist de SEO técnico, porque as duas coisas se sobrepõem.
Quer saber quais desses cabeçalhos faltam no seu site e como aplicá-los sem quebrar nada? Fale com a ALB Seven.