O que é CORS ?

O que é CORS ?

Como é feita a segurança dos navegadores ?

Hoje em dia com o avanço de aplicativos web que precisam estar cada vez mais integrados e ágeis, podemos na verdade estar abrindo espaço para outras ameaças as quais talvez não sejam tão visíveis.

o que é CSRF ?

Suponhamos que um usuário qualquer tenha suas contas e sessões abertas em seu navegador, como sua conta no banco.

Este mesmo usuário acaba se deparando com um site malicioso, mas sem perceber acaba realizando passos comuns que acabam comprometendo seus dados.

Através de suas sessões abertas o site pode te redirecionar com um link no qual faria uma requisição maliciosa para pegar seus dados e poder assim pegar seus dados se passando por você.

image.png

Isso é chamado de CSRF ( Cross-Site Request Forgery ) , é uma forma de ataque onde o atacante finge uma requisição tirando vantagens da sessão aberta do usuário.

SOP

Os navegadores tem uma politica utilizada para evitar este tipo de ataque, SOP ( Same Origin Policy ), Essa politica aplicada nos navegadores permitem apenas que requisições sejam realizadas sem configurações extras caso sejam da mesma origem.

  • Origem : é caracterizada Protocolo :// Dominio : Porta(opcional)

Exemplo:

image.png

O que é CORS ?

O SOP sem dúvida alguma faz restrições muito fortes sobre quem e quando podem utilizar dos recursos do servidor, caso seja da mesma origem sem problemas, caso venha de fora, sem chance.

CORS ( Cross-Origin Resource Sharing ) é um mecanismo que permite que flexibilizemos estás restrições vindas do SOP e assim podemos escolher quando e em quais condições iremos compartilhar recursos com servidores que fazem a requisição de outra origem.

Podemos personalizar as origens que serão permitidas no compartilhamento de recursos através do Allow-Access-Controll-Origin.

Exemplos:

  • Allow-Access-Controll-Origin : * ( permite que qualquer origem desconhecida )
  • Allow-Access-Controll-Origin : http : // localhost : 8080 ( permite está origem )

Existem dois tipos de requisições.

  • Requisições Simples

  • Requisições de Pre-Flight

Requisições Simples

São elas GET ou POST sem Nenhuma das especificações abaixo.

  • HEADER ( X )
  • COOKIE ( X )
  • BODY ( X )

O browser fará a requisição e o servidor irá responder se ele aceita requisições de fora ou não caso ele aceite, dentro da resposta do servidor estará o Header com a propriedade Allow-Access-Controll-Origin informando quais as origens permitidas, o navegador irá comparar as duas e mostrar a resposta enviada ou não, de acordo com o resultado.

image.png

image.png

Requisições de Pre-Flight

O servidor utilizará o CORS para receber uma pré-requisição com o método OPTIONS onde poderá conter credentials e outras informações relevantes, com o método OPTIONS o servidor é capaz de perceber como a requisição será antes que ela seja feita e então aprova-la ou não.

Caso a reprove o servidor retorna informa ao navegador para que estoure um erro no cliente sem realizar a requisição.

image.png

image.png

Importante Informar que...

  • Nós precisamos do CORS porque utilizamos navegadores considerados seguros, e precisamos contorna-lo com segurança pra utiliza-lo de forma correta e segura.

  • Caso estivéssemos fazendo requisições através de uma CLI não seria necessária a utilização de CORS ( lembrando que o CORS surge para evitarmos problemas em outras sessões abertas e o proveito de origens não confiáveis para obtenção de dados privados, uma vez que não há sessões para se tirar proveito dentro de uma CLI o uso de CORS não é necessário. )