Um site corporativo seguro cumpre, no mínimo, sete condições: serve tudo por HTTPS com certificado válido e redirecionamento forçado; envia cabeçalhos HTTP que limitam o que o navegador pode carregar e fazer (CSP, HSTS, X-Content-Type-Options, Referrer-Policy, Permissions-Policy); valida os formulários no servidor e os protege contra spam; tem cópias de segurança testadas; mantém todo o software atualizado; coleta só os dados pessoais imprescindíveis; e publica um arquivo security.txt para que quem detectar uma falha saiba a quem avisar. Tudo pode ser verificado pelo navegador e pelo terminal em menos de uma hora.
A maioria dos ataques a sites de empresa não é dirigida. São programas que percorrem a internet procurando um plugin desatualizado, um formulário sem proteção ou um painel com senha fraca. Esta lista é a que reviso em cada site que entrego ou audito, seja WordPress ou sob medida.
1. HTTPS em todo o site
HTTPS criptografa a conexão entre o visitante e o servidor. Sem ele, qualquer pessoa na mesma rede pode ler o que é enviado em um formulário e modificar o que é exibido. Os navegadores marcam como «não seguro» qualquer site HTTP.
O mínimo:
- Certificado válido e renovado automaticamente. O Let's Encrypt oferece de graça e a maioria das hospedagens o integra.
- Redirecionamento 301 de todas as URLs HTTP para HTTPS, também a versão com e sem
www. - Nenhum recurso carregado por HTTP dentro de uma página HTTPS (conteúdo misto). Uma imagem ou um script em HTTP quebra o cadeado e o navegador pode bloqueá-lo.
http://seudominio.com.br e confirme que redireciona para https://. Revise o console do navegador em busca de avisos de conteúdo misto. Passe o domínio pelo teste de SSL Labs da Qualys ou pela ferramenta Observatory da Mozilla.2. Cabeçalhos HTTP de segurança
São instruções que o servidor envia ao navegador com cada resposta e que limitam o que a página pode fazer. Custam algumas linhas de configuração e fecham famílias inteiras de ataques. Os cinco que importam:
| Cabeçalho | O que faz | Valor de partida razoável |
|---|---|---|
Content-Security-Policy | Define de quais origens a página pode carregar scripts, estilos, imagens e frames. É a defesa principal contra a injeção de scripts (XSS). | default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none', ampliando por recurso conforme o que o site carrega |
Strict-Transport-Security | Obriga o navegador a usar HTTPS nas visitas seguintes, mesmo que o usuário digite http://. | max-age=31536000; includeSubDomains (adicione preload só se for enviar o domínio à lista de pré-carregamento) |
X-Content-Type-Options | Impede que o navegador «adivinhe» o tipo de um arquivo e execute como script algo que não é. | nosniff |
Referrer-Policy | Controla quanta informação da URL de origem é enviada ao clicar em um link externo. | strict-origin-when-cross-origin |
Permissions-Policy | Desativa funções do navegador que o site não usa: câmera, microfone, geolocalização. | camera=(), microphone=(), geolocation=() |
Sobre a CSP, dois avisos. Primeiro: uma política estrita pode quebrar coisas (o chat de terceiros, o analytics, as fontes externas). Comece no modo relatório com Content-Security-Policy-Report-Only, veja o que seria bloqueado e ajuste antes de ativá-la. Segundo: evite 'unsafe-inline' em script-src se puder; com isso a política perde quase todo o valor contra XSS. Se o seu site usa um gerenciador de conteúdo com scripts inline, um nonce ou um hash por script é a alternativa.
Sobre HSTS: uma vez recebido, o navegador não voltará a carregar o site por HTTP durante o tempo indicado. Se o certificado falhar, o site fica inacessível até o conserto.
curl -I https://seudominio.com.br mostra os cabeçalhos. Você também pode vê-los na aba Rede das ferramentas de desenvolvedor. O Observatory da Mozilla e a ferramenta OWASP Secure Headers os pontuam e explicam o que falta.3. Formulários: validar no servidor, frear o spam
O formulário de contato é a parte do site que aceita dados de desconhecidos. Duas regras:
- Validar sempre no servidor. A validação no navegador é comodidade para o usuário, não segurança: qualquer um a pula enviando a requisição diretamente. O servidor deve verificar tipo, tamanho e formato de cada campo, rejeitar o que não espera e escapar tudo o que for exibido ou guardado. Os guias da OWASP sobre validação de entrada são a referência.
- Proteger contra o envio automatizado. Três camadas que se combinam: um campo oculto (honeypot) que humanos não veem e robôs preenchem; um limite de envios por endereço IP e por minuto; e, se o spam continuar, um desafio leve (Turnstile, reCAPTCHA) como último recurso, porque adiciona atrito e, no caso de serviços externos, envia dados do visitante a um terceiro que precisa constar na política de privacidade.
Se o formulário anexa arquivos, limite tipos e tamanho e nunca os sirva a partir da mesma rota onde são enviados.
4. Cópias de segurança que já foram testadas
Uma cópia de segurança que nunca foi restaurada é uma hipótese. O mínimo:
- Cópia automática diária de arquivos e banco de dados, com retenção de pelo menos 30 dias.
- Pelo menos uma cópia fora do servidor de produção (outro provedor ou armazenamento independente). Se o servidor cair ou for criptografado, a cópia que estava nele cai junto.
- Uma restauração de teste a cada trimestre, em um ambiente separado, cronometrada. O tempo que leva é o seu tempo real de recuperação.
- Cópia manual antes de cada atualização importante.
5. Atualizações e superfície de ataque
A maioria das invasões em sites de empresa explora vulnerabilidades já conhecidas e já corrigidas em software que ninguém atualizou. No WordPress, o grosso está em plugins e temas, não no núcleo. Em um site sob medida, nas bibliotecas e no sistema do servidor.
- Atualize o núcleo, os plugins, o tema e as dependências pelo menos uma vez por mês, com cópia prévia e verificação posterior.
- Elimine o que não usa: plugins desativados, temas antigos, contas de usuários que já saíram, arquivos de instalação. O que não existe não pode ser atacado.
- Proteja o painel de administração: senhas longas e únicas, segundo fator de autenticação, limite de tentativas de acesso e, se possível, acesso restrito por IP ou por VPN.
- Revise quem tem acesso à hospedagem, ao domínio e ao painel, e com quais permissões.
6. Mínimo de dados pessoais
Segurança e proteção de dados se cruzam aqui. O RGPD exige coletar só os dados necessários para a finalidade (artigo 5) e protegê-los com medidas técnicas adequadas (artigo 32). Para um site corporativo isso se traduz em:
- Formulários que pedem o imprescindível. Se para responder a uma consulta bastam nome e e-mail, não peça telefone, empresa e cargo como obrigatórios.
- Informação clara no momento da coleta: quem trata os dados, para quê, por quanto tempo e como exercer os direitos. Vinculada a partir do próprio formulário.
- Prazos de conservação definidos e aplicados: as mensagens de contato de quatro anos atrás não deveriam continuar no banco de dados do site.
- Cookies e scripts de terceiros só com consentimento prévio quando não forem tecnicamente necessários, seguindo o guia de cookies da AEPD.
- Um procedimento para avisar a AEPD em 72 horas se houver um vazamento que afete dados pessoais (artigo 33). Saber a quem ligar antes de precisar.
7. security.txt
Se alguém descobrir uma falha de segurança no seu site, como avisa você? O padrão security.txt (RFC 9116) resolve isso com um arquivo de texto em /.well-known/security.txt que indica um contato, uma data de expiração e, opcionalmente, um idioma preferido e uma política de divulgação. Exemplo mínimo:
Contact: mailto:[email protected]Expires: 2027-10-29T00:00:00.000ZPreferred-Languages: pt, es, en
O campo Expires é obrigatório e convém que não ultrapasse um ano. Coloque uma data no calendário para renová-lo.
Tabela de verificação
Imprima ou copie para uma planilha compartilhada. Revise ao entregar o site e depois a cada três meses.
| Verificação | Como verificar | Frequência |
|---|---|---|
| HTTP redireciona para HTTPS, com e sem www | Abrir as quatro variantes no navegador | Trimestral |
| Certificado válido e renovação automática | Cadeado do navegador; data de expiração | Mensal |
| Sem conteúdo misto | Console do navegador nas páginas principais | Após cada mudança |
Cabeçalho Strict-Transport-Security | curl -I | Trimestral |
Cabeçalho Content-Security-Policy sem 'unsafe-inline' em scripts | curl -I e console do navegador | Após cada mudança |
Cabeçalhos X-Content-Type-Options, Referrer-Policy, Permissions-Policy | curl -I | Trimestral |
| Formulários validam no servidor | Enviar dados inválidos pulando a validação do navegador | Após cada mudança |
| Antispam ativo (honeypot e limite de envios) | Revisar configuração e volume de spam recebido | Mensal |
| Cópia de segurança diária, externa, com 30 dias de retenção | Listar as cópias; verificar a data da última | Mensal |
| Restauração testada e cronometrada | Restaurar em um ambiente separado | Trimestral |
| Software atualizado | Painel de atualizações; lista de dependências | Mensal |
| Plugins, temas e usuários sem uso eliminados | Revisar listas | Trimestral |
| Segundo fator no painel de administração | Tentar acessar sem ele | Trimestral |
| Formulários pedem só o necessário e vinculam a informação de privacidade | Revisar cada formulário | Após cada mudança |
| Consentimento de cookies antes de scripts não necessários | Aba Rede antes de aceitar | Trimestral |
/.well-known/security.txt presente e não expirado | Abrir a URL; verificar Expires | Anual |
A segurança de um site corporativo não se compra uma vez. Revisa-se a cada trimestre.
Se você quiser que eu revise o seu com esta lista, o serviço de desenvolvimento web inclui uma auditoria técnica inicial, e a manutenção recorrente cobre as verificações mensais e trimestrais. Você também pode me escrever com o resultado da sua própria revisão.
- MDN · Content-Security-Policy
- MDN · Strict-Transport-Security
- MDN · X-Content-Type-Options
- MDN · Referrer-Policy
- MDN · Permissions-Policy
- OWASP · Secure Headers Project
- OWASP · Input Validation Cheat Sheet
- web.dev · Why HTTPS matters
- Let's Encrypt · Certificados TLS gratuitos
- Cloudflare Docs · HTTP Strict Transport Security
- RFC Editor · RFC 9116, security.txt
- EUR-Lex · Regulamento (UE) 2016/679, RGPD, artigos 5, 32 e 33
- AEPD · Guía sobre el uso de las cookies
- INCIBE · Protege tu empresa