Scanner de Segurança
Análise completa de segurança web: DNS, SSL, headers, cookies e mais
FAQ - Security Headers
O que é HSTS (Strict-Transport-Security)?
HSTS: HSTS força navegadores a acessarem o site apenas via HTTPS, protegendo contra ataques man-in-the-middle.
Como funciona: Quando o navegador acessa o site pela primeira vez, recebe esse header e memoriza que deve sempre usar HTTPS nas próximas visitas.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadParâmetros:
- max-age: Tempo em segundos (31536000 = 1 ano)
- includeSubDomains: Aplica a todos os subdomínios
- preload: Lista de pré-carregamento HSTS do Chrome
O que é CSP (Content-Security-Policy)?
CSP define de onde o site pode carregar recursos (scripts, imagens, estilos, etc), prevenindo ataques XSS (Cross-Site Scripting).
Por que é importante: Mesmo que um atacante injete código malicioso no seu site, o CSP impede a execução bloqueando recursos não autorizados.
Exemplo básico:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com; img-src 'self' data: https:;Principais diretivas:
default-src: Fallback para todas as outras diretivasscript-src: De onde pode carregar JavaScriptstyle-src: De onde pode carregar CSSimg-src: De onde pode carregar imagensconnect-src: Quais URLs pode fazer requisições (fetch, XHR)
O que é X-Content-Type-Options?
X-Content-Type-Options impede navegadores de "adivinhar" o tipo MIME de arquivos, prevenindo ataques baseados em MIME sniffing.
O problema: Navegadores tentam detectar o tipo real de um arquivo mesmo se o servidor enviar Content-Type errado. Isso pode executar JavaScript malicioso disfarçado de imagem.
Configuração (sempre use):
X-Content-Type-Options: nosniffCom isso, o navegador respeita exatamente o Content-Type enviado pelo servidor.
O que é X-Frame-Options?
X-Frame-Options protege contra clickjacking ao controlar se o site pode ser exibido dentro de iframes.
Ataque clickjacking: Site malicioso carrega seu site num iframe invisível e engana usuário a clicar em botões sensíveis.
Valores possíveis:
DENY: Nunca pode ser exibido em iframe (mais seguro)SAMEORIGIN: Apenas iframes do mesmo domínioALLOW-FROM uri: Apenas domínios específicos (obsoleto)
Recomendação:
X-Frame-Options: DENYO que é X-XSS-Protection?
X-XSS-Protection é um header legado que ativa filtro anti-XSS em navegadores antigos (IE, Chrome antigo, Safari).
Status atual: Obsoleto. Navegadores modernos removeram esse recurso. Use CSP ao invés.
Configuração recomendada:
X-XSS-Protection: 0Por quê desabilitar? Bugs no filtro XSS podem criar novas vulnerabilidades. CSP é superior.
O que é Referrer-Policy?
Referrer-Policy controla quanta informação de origem é enviada ao navegar para outros sites, protegendo privacidade dos usuários.
Valores comuns:
no-referrer: Nunca envia informação de origemstrict-origin-when-cross-origin: Apenas origem em navegação externa (recomendado)same-origin: Só envia para páginas do mesmo domíniono-referrer-when-downgrade: Não envia se HTTPS → HTTP
Exemplo:
Referrer-Policy: strict-origin-when-cross-originO que é Permissions-Policy?
Permissions-Policy controla quais recursos sensíveis (câmera, microfone, geolocalização, etc) o site e iframes podem usar.
Por que usar: Previne que scripts maliciosos ou iframes acessem recursos sensíveis sem permissão explícita.
Recursos controláveis:
camera: Acesso à câmeramicrophone: Acesso ao microfonegeolocation: Localização GPSpayment: API de pagamentousb: Acesso USB
Exemplo:
Permissions-Policy: camera=(), microphone=(), geolocation=(self)O que são COOP, CORP e COEP?
São headers de isolamento cross-origin que aumentam segurança impedindo ataques baseados em timing e compartilhamento de memória.
COOP (Cross-Origin-Opener-Policy):
Isola janelas abertas com window.open() de diferentes origens, impedindo acesso via JavaScript.
Cross-Origin-Opener-Policy: same-originCORP (Cross-Origin-Resource-Policy):
Controla quais sites podem carregar recursos (imagens, scripts, etc) do seu servidor.
Cross-Origin-Resource-Policy: same-originCOEP (Cross-Origin-Embedder-Policy):
Garante que todos os recursos externos tenham permissão CORS explícita antes de carregar.
Cross-Origin-Embedder-Policy: require-corp⚠️ Atenção: Esses headers podem quebrar funcionalidades que dependem de recursos cross-origin. Teste antes de aplicar em produção.
Por que meu site tem nota baixa?
A nota é calculada com base nos headers de segurança presentes. Cada header ausente reduz a pontuação.
Prioridade de implementação:
- HSTS - Crítico (força HTTPS)
- CSP - Crítico (previne XSS)
- X-Frame-Options - Alto (previne clickjacking)
- X-Content-Type-Options - Alto (previne MIME sniffing)
- Referrer-Policy - Médio (privacidade)
- Permissions-Policy - Médio (controle de recursos)
- COOP/CORP/COEP - Baixo (isolamento avançado)
Dica: Comece implementando os 4 primeiros. Isso já dá nota B+ na maioria dos casos.
Como implementar esses headers no Nginx?
Adicione no arquivo de configuração do site (/etc/nginx/sites-available/seu-site):
# Security Headers
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline';" always;
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;Depois: sudo nginx -t e sudo systemctl reload nginx
Como implementar no Next.js?
Adicione no arquivo next.config.js:
module.exports = {
async headers() {
return [
{
source: '/:path*',
headers: [
{
key: 'Strict-Transport-Security',
value: 'max-age=31536000; includeSubDomains'
},
{
key: 'X-Frame-Options',
value: 'DENY'
},
{
key: 'X-Content-Type-Options',
value: 'nosniff'
},
{
key: 'Referrer-Policy',
value: 'strict-origin-when-cross-origin'
}
]
}
];
}
};O que é um certificado SSL válido?
Um certificado SSL válido garante que a comunicação entre navegador e servidor é criptografada e autêntica.
Requisitos:
- Emitido por autoridade certificadora confiável (Let's Encrypt, DigiCert, etc)
- Não expirado (renove 30 dias antes do vencimento)
- Corresponde ao domínio do site
- Protocolo TLS 1.2 ou superior (TLS 1.0/1.1 são inseguros)
Certificado grátis: Use Let's Encrypt com Certbot para renovação automática.
Meu site redireciona HTTP para HTTPS?
O redirecionamento HTTP → HTTPS é essencial para garantir que usuários sempre usem conexão segura, mesmo digitando http://.
No Nginx:
server {
listen 80;
server_name seu-dominio.com;
return 301 https://$server_name$request_uri;
}No Apache:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]