Introdução
Quando eu vejo um erro de CORS no console do navegador, eu quase sempre vejo o mesmo reflexo no time alguns minutos depois: alguém coloca Access-Control-Allow-Origin: *, desabilita alguma proteção no browser de desenvolvimento e declara a tarefa como resolvida. Isso não resolve nada. Só mascara a regra de segurança que está impedindo um site qualquer de ler respostas sensíveis da sua API.
CORS não é um capricho do Chrome, do Firefox ou do Edge. Ele é o mecanismo que o servidor usa para dizer ao navegador quais origins podem ler uma resposta cross-origin. O browser aplica a regra, mas a decisão vem do backend ou da camada de borda. Se eu configuro isso de forma frouxa, eu não apenas elimino o erro visual do console: eu amplio a superfície de ataque da minha aplicação.
Este é o quinto artigo da série Segurança para Devs. No artigo sobre JWT, OAuth2 e OpenID Connect, eu cobri identidade e tokens. No artigo sobre BFF, eu mostrei como tirar token do browser. No artigo sobre API Gateway, eu discuti política centralizada de segurança na borda. Agora eu fecho uma lacuna que aparece em praticamente toda SPA, portal administrativo e integração web: como configurar CORS sem transformar uma proteção importante em enfeite decorativo.






