SynNova - Software e Soluções

Segurança no GitHub Pages - Guia Específico

⚠️ Limitações do GitHub Pages

Problema Principal

O GitHub Pages não permite configuração completa de headers HTTP através de arquivos como .htaccess ou _headers. Isso significa que:

O que foi Implementado

1. Meta Tags de Segurança (✅ Funcionando)

<!-- Proteção contra ClickJacking -->
<meta http-equiv="X-Frame-Options" content="DENY">

<!-- Prevenção de Content Type Sniffing -->
<meta http-equiv="X-Content-Type-Options" content="nosniff">

<!-- Strict Transport Security (HSTS) -->
<meta http-equiv="Strict-Transport-Security" content="max-age=31536000; includeSubDomains; preload">

<!-- Content Security Policy -->
<meta http-equiv="Content-Security-Policy" content="...">

2. Configuração Jekyll (✅ Funcionando)

3. Arquivos de Configuração (⚠️ Preparação para Migração)

🔧 Soluções Alternativas

Opção 1: Melhorar o que temos

<!-- Adicionar ao <head> do HTML -->
<meta http-equiv="X-Frame-Options" content="DENY">
<meta http-equiv="X-Content-Type-Options" content="nosniff">
<meta http-equiv="X-XSS-Protection" content="1; mode=block">
<meta http-equiv="Strict-Transport-Security" content="max-age=31536000; includeSubDomains; preload">
<meta name="referrer" content="strict-origin-when-cross-origin">

Opção 2: Usar Cloudflare (Recomendado)

Configuração Cloudflare para GitHub Pages:

  1. Configurar DNS no Cloudflare
    • Apontar domínio para GitHub Pages
    • Ativar proxy (nuvem laranja)
  2. Configurar Page Rules
    https://portfolio.synnova.com.br/*
       
    Headers:
    - X-Frame-Options: DENY
    - X-Content-Type-Options: nosniff
    - X-XSS-Protection: 1; mode=block
    - Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
    - Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; media-src 'self'; connect-src 'self' https://wa.me https://api.whatsapp.com; frame-src 'none'; object-src 'none'; base-uri 'self'
    
  3. Configurar SSL/TLS
    • Full (strict)
    • HSTS habilitado
    • Automatic HTTPS Rewrites

Opção 3: Migrar para Netlify (Melhor para Segurança)

Vantagens:

Processo:

  1. Criar conta no Netlify
  2. Conectar repositório GitHub
  3. Configurar _headers (já criado)
  4. Apontar domínio

🧪 Como Testar

Teste 1: Meta Tags (Atual)

// Verificar se meta tags estão no HTML
const csp = document.querySelector('meta[http-equiv="Content-Security-Policy"]');
console.log('CSP encontrado:', csp ? 'SIM' : 'NÃO');

Teste 2: Headers HTTP (Ferramentas Externas)

# Testar headers reais
curl -I https://portfolio.synnova.com.br

# Ou usar ferramentas online:
# - SecurityHeaders.com
# - Mozilla Observatory
# - Sucuri SiteCheck

Teste 3: Validação de Segurança

📊 Resultados Esperados

Com GitHub Pages (Atual)

Com Cloudflare (Recomendado)

Com Netlify (Ideal)

🚀 Próximos Passos Recomendados

Curto Prazo (1-2 dias)

  1. ✅ Verificar se meta tags estão funcionando
  2. ✅ Testar com SecurityHeaders.com
  3. ✅ Configurar Cloudflare (se possível)

Médio Prazo (1-2 semanas)

  1. 📋 Avaliar migração para Netlify
  2. 📋 Implementar monitoramento contínuo
  3. 📋 Configurar alertas de segurança

Longo Prazo (1-2 meses)

  1. 📋 Certificação de segurança
  2. 📋 Auditoria de segurança completa
  3. 📋 Implementar HSTS preload

📞 Configuração Cloudflare (Passo a Passo)

1. Criar Conta Cloudflare

2. Adicionar Domínio

3. Configurar Page Rules

URL: https://portfolio.synnova.com.br/*

Settings:
- Security Level: High
- SSL: Full (strict)
- Always Use HTTPS: On
- HTTP Strict Transport Security (HSTS): On
- Browser Integrity Check: On

4. Configurar Headers

X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; media-src 'self'; connect-src 'self' https://wa.me https://api.whatsapp.com; frame-src 'none'; object-src 'none'; base-uri 'self'

🏆 Resumo

Situação Atual: GitHub Pages com limitações de segurança Solução Atual: Meta tags HTML (funcionando) Solução Recomendada: Cloudflare + GitHub Pages Solução Ideal: Migração para Netlify

Status de Segurança: