caramelosec. SCAN

CORS Access-Control-Allow-Origin Value

Checker ID: #15

v2.0.0-alpha

CORS Access-Control-Allow-Origin Value

Descrição

O porteiro que verifica o crachá de quem está batendo na porta da sua API.

Importância

Corrigimos um bug de "excesso de zelo". O navegador envia a origem exata (sem barra no final). O checker agora valida a correspondência exata. A precisão aqui evita erros de configuração que bloqueiam usuários legítimos.

Requisitos de Sucesso
  • • O cabeçalho Access-Control-Allow-Origin deve ser idêntico à origem que fez a requisição, sem barras extras (/) no final.

Cenários de Teste
Cenário Aprovado: Requisição de https://caramelosec.com:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://caramelosec.com
Content-Type: text/html; charset=UTF-8
Cenário Reprovado: Barra extra no final (O navegador vai bloquear):
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://caramelosec.com/
Content-Type: text/html; charset=UTF-8
v1.0.0-alpha

CORS Access-Control-Allow-Origin Value

Descrição

Essa é a regra que funciona como o “porteiro” do seu website, definindo quais sites têm permissão para solicitar dados ao seu servidor, impedindo que aplicações não autorizadas consumam suas informações.

Importância

Se você deixar isso aberto (*), qualquer site malicioso que o seu usuário visitar pode fazer uma requisição para o seu sistema e roubar os dados dele de forma arbitrária. Você deve restringir isso para que apenas o seu próprio front-end tenha permissão de acessar os dados.

Requisitos de Sucesso
  • • O cabeçalho Access-Control-Allow-Origin deve estar presente e definir o domínio do website sob teste como valor.

Cenários de Teste
Cenário Aprovado: O cabeçalho Access-Control-Allow-Origin do site https://www.test.example está presente e contém o valor https://www.test.example:
HTTP/1.1 200 OK
Date: Wed, 17 Dec 2025 11:45:00 GMT
Server: nginx/1.18.0
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Strict-Transport-Security: max-age=31536000
Access-Control-Allow-Origin: https://www.test.example 
Last-Modified: Mon, 01 Dec 2025 10:00:00 GMT
ETag: "5f8c-60d4-1a2b"
Cache-Control: max-age=3600
Content-Length: 1540
Cenário Reprovado: O cabeçalho Access-Control-Allow-Origin está ausente:
HTTP/1.1 200 OK
Date: Wed, 17 Dec 2025 11:45:00 GMT
Server: nginx/1.18.0
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Strict-Transport-Security: max-age=31536000
Last-Modified: Mon, 01 Dec 2025 10:00:00 GMT
ETag: "5f8c-60d4-1a2b"
Cache-Control: max-age=3600
Content-Length: 1540
Cenário Reprovado: O cabeçalho Access-Control-Allow-Origin do site https://www.test.example está presente mas contém o valor https://www.test002.example:
HTTP/1.1 200 OK
Date: Wed, 17 Dec 2025 11:45:00 GMT
Server: nginx/1.18.0
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Strict-Transport-Security: max-age=31536000
Access-Control-Allow-Origin: https://www.test002.example 
Last-Modified: Mon, 01 Dec 2025 10:00:00 GMT
ETag: "5f8c-60d4-1a2b"
Cache-Control: max-age=3600
Content-Length: 1540
Cenário Reprovado: O cabeçalho Access-Control-Allow-Origin do site https://www.test.example contém o valor *:
HTTP/1.1 200 OK
Date: Wed, 17 Dec 2025 11:45:00 GMT
Server: nginx/1.18.0
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Strict-Transport-Security: max-age=31536000
Access-Control-Allow-Origin: * 
Last-Modified: Mon, 01 Dec 2025 10:00:00 GMT
ETag: "5f8c-60d4-1a2b"
Cache-Control: max-age=3600
Content-Length: 1540