Fymax Sentinel

Explorando a fronteira entre IA e Cibersegurança

🤖AI Insights (GEO Optimized)

Implementação prática de cabeçalhos de segurança web modernos. Configuração de Content-Security-Policy (CSP) estrita com nonces, HTTP Strict Transport Security (HSTS) com subdomínios e preloading, e desativação de APIs invasivas do navegador.

TUTORIAIS

Tutorial: Como Configurar Cabeçalhos de Segurança HTTP (CSP, HSTS, Permissions-Policy) Nota A+ no Seu Site

Tutorial: Como Configurar Cabeçalhos de Segurança HTTP (CSP, HSTS, Permissions-Policy) Nota A+ no Seu Site

Você sabia que mais de 70% dos sites na internet brasileira recebem notas F ou D em ferramentas de auditoria como o SecurityHeaders.com?

Embora a maioria dos desenvolvedores se preocupe em colocar um certificado SSL gratuito (o famoso cadeado verde na barra de endereços), poucos sabem que o HTTPS isolado não protege contra ataques sofisticados de Cross-Site Scripting (XSS), Clickjacking ou injeção de scripts maliciosos em formulários de checkout.

Os Cabeçalhos de Segurança HTTP (HTTP Security Headers) são diretivas enviadas pelo seu servidor ao navegador do visitante informando exatamente quais comportamentos são permitidos e quais devem ser bloqueados sumariamente.

Neste tutorial prático, você aprenderá a configurar todos os cabeçalhos essenciais para atingir a pontuação máxima Nota A+, seja no framework Next.js ou em um servidor web Nginx.


1. O Arsenal de Cabeçalhos Essenciais

Para conquistar a nota máxima e blindar sua aplicação web, precisamos implementar 6 cabeçalhos fundamentais:

┌─────────────────────────────────┬────────────────────────────────────────────────────────┐
│ Cabeçalho HTTP                  │ Função Primária de Defesa                              │
├─────────────────────────────────┼────────────────────────────────────────────────────────┤
│ Content-Security-Policy (CSP)   │ Bloqueia execução de scripts não autorizados (XSS)     │
│ Strict-Transport-Security (HSTS)│ Força conexões HTTPS perpétuas com preload             │
│ X-Frame-Options                 │ Impede que o site seja embutido em iframes (Clickjack) │
│ X-Content-Type-Options          │ Impede o navegador de adivinhar o tipo MIME (Sniffing) │
│ Referrer-Policy                 │ Controla vazamento de URLs de referência em links      │
│ Permissions-Policy              │ Desativa câmera, microfone e APIs de rastreamento      │
└─────────────────────────────────┴────────────────────────────────────────────────────────┘

Passo 2: Implementando no Next.js (App Router / Pages)

Se sua aplicação é construída em Next.js, a configuração deve ser aplicada diretamente no arquivo raiz next.config.ts (ou next.config.js).

Abra seu arquivo de configuração e insira as regras:

import type { NextConfig } from "next";

const cspHeader = `
    default-src 'self';
    script-src 'self' 'unsafe-inline' https://pagead2.googlesyndication.com https://adservice.google.com https://www.googletagservices.com https://partner.googleadservices.com;
    style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
    img-src 'self' blob: data: https://pagead2.googlesyndication.com https://www.google.com https://googleads.g.doubleclick.net;
    font-src 'self' https://fonts.gstatic.com;
    connect-src 'self' https://pagead2.googlesyndication.com https://adservice.google.com https://www.google-analytics.com;
    frame-src 'self' https://googleads.g.doubleclick.net https://tpc.googlesyndication.com;
    object-src 'none';
    base-uri 'self';
    form-action 'self';
    frame-ancestors 'self';
    upgrade-insecure-requests;
`;

const securityHeaders = [
  {
    key: 'Content-Security-Policy',
    value: cspHeader.replace(/\s{2,}/g, ' ').trim(),
  },
  {
    key: 'Strict-Transport-Security',
    value: 'max-age=63072000; includeSubDomains; preload',
  },
  {
    key: 'X-Frame-Options',
    value: 'SAMEORIGIN',
  },
  {
    key: 'X-Content-Type-Options',
    value: 'nosniff',
  },
  {
    key: 'Referrer-Policy',
    value: 'strict-origin-when-cross-origin',
  },
  {
    key: 'Permissions-Policy',
    value: 'camera=(), microphone=(), geolocation=(), browsing-topics=()',
  },
];

const nextConfig: NextConfig = {
  poweredByHeader: false, // Remove o cabeçalho 'X-Powered-By: Next.js'
  async headers() {
    return [
      {
        source: '/(.*)',
        headers: securityHeaders,
      },
    ];
  },
};

export default nextConfig;

Passo 3: Implementando no Servidor Web Nginx

Se você utiliza um servidor Nginx como proxy reverso para suas aplicações ou páginas estáticas, adicione as seguintes linhas dentro do bloco server correspondente ao seu domínio (geralmente em /etc/nginx/sites-available/seu-site.conf):

server {
    listen 443 ssl http2;
    server_name landingfymax.com.br;

    # Ocultar versão do Nginx
    server_tokens off;

    # HSTS com preload (2 anos de duração)
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

    # Anti-Clickjacking
    add_header X-Frame-Options "SAMEORIGIN" always;

    # Anti-MIME Sniffing
    add_header X-Content-Type-Options "nosniff" always;

    # Referrer Policy
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    # Permissions Policy
    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

    # Content Security Policy (ajuste conforme os scripts do seu site)
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; object-src 'none'; frame-ancestors 'self';" always;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Após editar, teste a sintaxe das configurações e recarregue o servidor:

sudo nginx -t && sudo systemctl reload nginx

Passo 4: Validando Sua Nota no SecurityHeaders.com

Com os cabeçalhos aplicados e o deploy efetuado:

  1. Acesse https://securityheaders.com/;
  2. Digite a URL do seu domínio (ex: landingfymax.com.br);
  3. Clique em Scan.

Você verá um selo verde vibrante com a classificação Nota A+, comprovando que sua infraestrutura adota as mais rigorosas diretrizes de defesa em profundidade da web moderna!


Conclusão

Configurar cabeçalhos de segurança não apenas fecha as portas para invasões e roubo de dados, mas transmite uma mensagem incontestável de profissionalismo para navegadores, auditorias e mecanismos de monetização como o Google AdSense.

Quer que seu site ou landing page seja construído com arquitetura de alta conversão e segurança militar desde o primeiro dia? Conte com a equipe da Landingfymax. Fale com nossos especialistas.

Na Landingfymax, não apenas construímos sites; criamos presenças digitais sólidas, velozes e preparadas para os desafios de segurança de 2026.

Precisa de uma landing page que converta e seja tecnicamente impecável?
Conheça nosso trabalho →

Perguntas Frequentes

O que é Content-Security-Policy (CSP) e por que ela é tão importante?

A CSP é um cabeçalho HTTP que instrui o navegador sobre quais origens (scripts, imagens, estilos, conexões) são autorizadas a ser executadas na página, agindo como a defesa mais eficaz da web contra ataques de Cross-Site Scripting (XSS).

O que faz a diretiva HSTS (HTTP Strict Transport Security)?

Ela força o navegador a comunicar-se com seu domínio única e exclusivamente através de conexões HTTPS criptografadas, impedindo ataques de Man-in-the-Middle (MITM) e downgrade de protocolo SSL.

Como o Google avalia sites com cabeçalhos de segurança bem configurados?

O algoritmo de ranqueamento do Google e o programa de certificação de anunciantes priorizam sites com HTTPS estrito e boas práticas de segurança, beneficiando diretamente o SEO e reduzindo taxas de rejeição no AdSense.

Uma CSP muito restritiva pode quebrar scripts de anúncios como o Google AdSense?

Sim, se você não incluir os domínios oficiais da rede de anúncios ('pagead2.googlesyndication.com', 'googleads.g.doubleclick.net') nas diretivas 'script-src', 'img-src' e 'frame-src'. O tutorial inclui a configuração correta para conviver com anúncios sem quebras.

Evandro Carvalho

Sobre o Autor

Evandro Carvalho é um profissional de tecnologia especializado em cibersegurança avançada e infraestrutura web. Com foco na interseção entre IA e defesa digital, ele ajuda empresas a construir sistemas resilientes e preparados para o futuro.

Ver perfil completo →
LinkedInX (Twitter)

Mais Conteúdos Tecnológicos