Fase 18: revisão aprofundada de segurança
Sem achados CRITICAL/HIGH. Corrige: cookies de sessão/carrinho sem secure; HTTPS não forçado em produção (força_ssl); Content-Security- Policy totalmente desligada (política estrita, sem nada externo: importmap vendoriza JS localmente, Tailwind é CSS local único, nonce por requisição para o script do importmap); cupom e checkout sem rate limit (força bruta de código/spam de tentativa); sessão de admin e de cliente nunca expiravam (cookie permanent de 20 anos sem expiração no servidor) — agora expiram por inatividade (7 dias admin, 30 dias cliente), renovada a cada requisição autenticada. Ambiente de teste trocou cache_store de :null_store para :memory_store (com limpeza a cada exemplo/teste) — sem isso, rate_limit é literalmente impossível de testar, já que depende de Rails.cache para contar tentativas. docs/security.md atualizado: dois TODOs desatualizados resolvidos (limite de upload já decidido na Fase 1; rate limiting e headers resolvidos agora), mais o registro das decisões desta fase. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JVmATxHWcsrRUtNEQB923F
U
Uriel Juliatti committed
670049b0d4274c49bdf7c99868e5c03aa819efad
Parent: 5614020