1. Entenda que o CORS é uma gambiarra temporária para compensar uma falha de design dos navegadores.
- O CORS (Compartilhamento de Recursos entre Origens) resolve problemas de segurança causados por credenciais implícitas em requisições entre origens.
- O comportamento padrão dos navegadores expõe os usuários ao risco de ataques XSRF.
- O CORS tenta mitigar esses problemas, mas tem limitações fundamentais dentro do escopo de segurança.
2. O CORS impede a leitura do resultado de requisições entre origens, mas não bloqueia a própria requisição.
fun-games.example não consegue ler os dados de your-bank.example, mas ainda pode executar requisições que alteram estado, como uma transferência de dinheiro.
- Isso acontece por causa da forma como os navegadores lidam com cookies e credenciais por padrão.
3. Uma segurança eficaz entre origens começa ignorando credenciais implícitas.
- Remova ou permita explicitamente cookies e credenciais semelhantes em requisições entre origens.
- Use middleware que aproveite os cabeçalhos
Sec-Fetch-* para filtrar ou remover cookies entre origens.
4. Credenciais explícitas são uma alternativa mais segura do que credenciais implícitas.
- Use o cabeçalho
Authorization com tokens de autenticação em vez de cookies.
- Credenciais explícitas evitam o uso indevido de credenciais entre sites diferentes.
- Não é adequado para sites com renderização no servidor, mas é a melhor abordagem para APIs e aplicações client-side.
5. Implemente cookies SameSite para restringir o uso de credenciais entre origens.
- Use
SameSite=Lax para que, por padrão, cookies não sejam incluídos em requisições entre origens.
- Para uma política mais rígida, escolha
SameSite=Strict. Porém, isso pode afetar a usabilidade (por exemplo, logout após navegação entre origens).
6. Adote uma política de CORS simples e segura.
- Política padrão:
Access-Control-Allow-Origin: * e Access-Control-Allow-Methods: * permitem apenas acesso anônimo.
- Essa política protege o site contra uso indevido não intencional de credenciais ao desativar credenciais implícitas em requisições entre origens.
7. Não complique demais a política de CORS em nome da segurança.
- Configurações excessivamente específicas podem criar uma falsa sensação de segurança.
- Proxies de CORS e outros contornos podem burlar políticas impostas pelo navegador, anulando esforços para restringir o acesso.
8. Entenda o movimento mais amplo em direção a padrões mais seguros na web.
- Os navegadores estão explorando abordagens como State Partitioning (Firefox), Tracking Prevention (Safari) e CHIPS (Chrome) para resolver problemas de credenciais entre origens.
- Essas iniciativas buscam melhorar a segurança e a privacidade do usuário ao limitar o compartilhamento de cookies e credenciais entre origens.
9. Reconheça que o CORS é uma solução imperfeita.
- A retrocompatibilidade do CORS adiciona complexidade sem resolver completamente os problemas básicos de segurança.
- Os navegadores estão adotando lentamente novas abordagens para mitigar esses problemas, mas o progresso é inconsistente.
Ainda não há comentários.