HTTP Security Headers - Same Origin Policy
Segurança é um assunto difícil. É extremamente fácil deixar brechas de segurança durante o desenvolvimento de uma aplicação. Neste artigo explico como HTTP Security Headers pode ajudar teu website.
A não ser que segurança seja uma feature intrínseca ao negócio, como em caso dos bancos. Infelizmente ela acaba ficando para segundo plano, isso quando é lembrada.
Para proteger uma aplicação ou website há muitos pontos para considerar, mas definitivamente um bom ponto de partida é explorar os HTTP Security Headers.
Essa série de posts tem como intuito apresentar os principais Security Headers e como configura-los da melhor forma. As configurações a seguir são para .NET Core (ASP.NET MVC e WEB API)
Same Origin Policy / CORS (Cross-Origin Resource Sharing)
CORS (Cross-Origin Resource Sharing) é uma especificação do W3C que, quando implementado pelo navegador, permite que um site acesse recursos de outro site mesmo estando em domínios diferentes.
Explicando um pouco melhor: os navegadores fazem uso de uma funcionalidade de segurança chamada Same-Origin Policy: um recurso de um site só pode ser chamado por outro site se os 2 sites estiverem sob o mesmo domínio (mesmo endereço, por ex.: meudominio.com.br). Isso limita a chamada de APIs REST por aplicações JS, por exemplo, hospedadas em servidores diferentes (front-end e back-end em camadas distintas). Isso porque o navegador considera recursos do mesmo domínio somente aqueles que usam o mesmo protocolo (http ou https), a mesma porta e o mesmo endereço (mesmo subdomínios, subdominio.meudominio.com.br, por exemplo, não são considerados seguros e não funcionam).
Exemplo de configuração no .NET Core:
A configuração acima controla quem tem acesso a aplicação e como pode acessar.
Qualquer duvida deixe nos comentários. Até o próximo post.
Exemplo e implantação aqui
Fundador e CTO da Solutto (ERP para Franquias)
4 aRodrigo, outra coisa que pensei aqui. Como consigo simular acessos através de um webClient (por programação ou por apps como postman ou insomnia), os headers CORS não protegem tentativas de acesso à api, certo?
Fundador e CTO da Solutto (ERP para Franquias)
4 aÓtimo artigo Rodrigo. Eu complementaria apenas com um alerta que é meio óbvio para uns mas nem tanto para outros. Se CORS estiver desabilitado para qq origem uma api rest pública ou protegida por access token ou por JWT não funcionaria. Ou seja, se você está implementando uma web api para ser consumida por qualquer parceiro e proveniente de qualquer origem, você não pode habilitar a proteção e tem de liberar cross-origin. Estou correto ou falei besteira?
Software Developer | Tech Lead at IBM
4 aParabéns pelo post e assunto abordado. Estive implementando justamente essas configurações em uma API está semana e da pra ver claramente como são importantes