Logo da CarameloSec - Plataforma de análise de segurança automatizada

CORS Access-Control-Allow-Methods Values

Checker ID: #16

v2.0.0-alpha

CORS Access-Control-Allow-Methods Values

Descrição

Define quais ações (verbos HTTP) os visitantes autorizados podem realizar na sua API.

Importância

Seguindo a lógica de APIs modernas (REST), métodos de acesso e manipulação de dados como GET, HEAD, OPTIONS, POST, PUT, PATCH e DELETE são necessários em muitos cenários. A regra aqui é a transparência: declare explicitamente apenas os métodos que sua API realmente aceita.

Requisitos de Sucesso
  • • O cabeçalho Access-Control-Allow-Methods deve estar presente e listar os métodos HTTP que a API aceita.

  • • Métodos aceitos (declare apenas os que a sua API realmente usa): GET, HEAD, OPTIONS, POST, PUT, PATCH, DELETE.

  • • Qualquer combinação dos métodos acima é válida, desde que listada explicitamente.

  • • O cabeçalho não pode estar ausente.

Cenários de Teste
Cenário Aprovado: API de apenas leitura:
HTTP/1.1 200 OK
Access-Control-Allow-Methods: GET, HEAD, OPTIONS
Content-Type: text/html; charset=UTF-8
Cenário Aprovado: API Completa (CRUD — Create, Read, Update, Delete):
HTTP/1.1 200 OK
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Content-Type: text/html; charset=UTF-8
Cenário Reprovado: Cabeçalho ausente (o servidor não declarou quais métodos aceita):
HTTP/1.1 200 OK
Date: Wed, 17 Dec 2025 11:45:00 GMT
Content-Type: text/html; charset=UTF-8
Cenário Reprovado: Cabeçalho presente mas com métodos não permitidos (TRACE é um método de depuração que pode ser explorado):
HTTP/1.1 200 OK
Access-Control-Allow-Methods: TRACE
Content-Type: text/html; charset=UTF-8
v1.0.0-alpha

CORS Access-Control-Allow-Methods Values

Descrição

Aqui o nosso “porteiro” define o que os visitantes autorizados podem fazer no seu servidor (Ler? Gravar? Deletar?).

Importância

Seguindo o princípio de “Menor Privilégio”, se um endpoint do seu servidor serve apenas para leitura de dados, por que permitir que alguém tente enviar um comando DELETE? Libere apenas os métodos essenciais para o funcionamento do seu site.

Requisitos de Sucesso
  • • O cabeçalho Access-Control-Allow-Methods deve estar presente e conter apenas os métodos: GET, HEAD, OPTIONS e POST (independente da ordem).

Cenários de Teste
Cenário Aprovado: O cabeçalho Access-Control-Allow-Methods está presente e possui exatamente os valores GET, HEAD, OPTIONS e POST:
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-Methods: GET, HEAD, OPTIONS, POST
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-Methods 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 contém métodos além dos esperados — esta versão do checker segue o princípio de menor privilégio e aceita apenas GET, HEAD, OPTIONS e POST:
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-Methods: GET, HEAD, OPTIONS, POST, DELETE
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 não contém todos os métodos obrigatórios (HEAD 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
Access-Control-Allow-Methods: GET, OPTIONS, POST
Last-Modified: Mon, 01 Dec 2025 10:00:00 GMT
ETag: "5f8c-60d4-1a2b"
Cache-Control: max-age=3600
Content-Length: 1540