Introdução
O CORS (Cross-Origin Resource Sharing) define quais origens podem acessar recursos da sua aplicação PHP. Configurá-lo corretamente evita vulnerabilidades como Cross-Site Scripting (XSS) e Cross-Site Request Forgery (CSRF), protegendo suas APIs contra requisições maliciosas.
1. O que é CORS e por que é importante?
CORS é um mecanismo de segurança que permite ou bloqueia requisições feitas a partir de domínios diferentes do servidor de origem. Sem uma configuração adequada, sua API pode estar vulnerável a ataques.
2. Configurando CORS corretamente no PHP
Para permitir apenas requisições de domínios específicos, podemos configurar os cabeçalhos HTTP corretamente:
header("Access-Control-Allow-Origin: https://meusite.com");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Authorization");
Isso garante que apenas https://meusite.com
possa acessar a API e apenas os métodos GET, POST e OPTIONS sejam permitidos.
3. Respondendo requisições preflight
Browsers enviam uma requisição OPTIONS
antes de executar uma requisição real para verificar as permissões CORS. Podemos tratá-la diretamente no PHP:
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
header("HTTP/1.1 200 OK");
exit();
}
Isso evita que o navegador bloqueie requisições legítimas por falta de resposta.
4. Configuração segura de CORS para APIs públicas
Se sua API for pública, mas você quer evitar riscos, permita apenas os métodos e cabeçalhos necessários:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST");
header("Access-Control-Allow-Headers: Content-Type, Authorization");
Nunca use *
em APIs que lidam com dados sensíveis sem uma política de segurança bem definida.
5. Bloqueando origens suspeitas
Se quiser restringir acessos de domínios não autorizados, implemente um controle dinâmico de CORS:
$origens_permitidas = ['https://meusite.com', 'https://parceiro.com'];
if (isset($_SERVER['HTTP_ORIGIN']) && in_array($_SERVER['HTTP_ORIGIN'], $origens_permitidas)) {
header("Access-Control-Allow-Origin: ".$_SERVER['HTTP_ORIGIN']);
}
Isso garante que apenas domínios autorizados possam fazer requisições.
Conclusão
Configurar CORS corretamente no PHP evita que aplicações sejam exploradas por sites maliciosos e protege APIs contra acessos não autorizados. Restringir origens confiáveis, definir métodos permitidos e validar requisições prévias são passos essenciais para fortalecer a segurança da aplicação.
Por que configurar CORS corretamente no PHP é essencial?
A configuração incorreta de CORS pode resultar em vazamento de dados e acessos não autorizados. Muitas APIs expõem seus recursos para qualquer origem, permitindo que sites maliciosos realizem requisições sem o consentimento do usuário.
A melhor prática para evitar problemas de segurança é restringir o acesso apenas a domínios confiáveis e limitar os métodos e cabeçalhos permitidos. Implementar regras específicas para cada cenário reduz a exposição da aplicação e minimiza riscos.
Além disso, é importante testar as configurações com ferramentas como o curl
ou extensões para navegadores, garantindo que apenas requisições legítimas sejam processadas. Uma abordagem bem planejada para CORS melhora a segurança e o desempenho da API.
Algumas aplicações:
- Permitir apenas acessos autorizados à API de um domínio específico.
- Evitar requisições não autorizadas e acessos indevidos a dados sensíveis.
- Melhorar a segurança da comunicação entre frontend e backend.
- Reduzir o risco de ataques *Cross-Origin* e requisições maliciosas.
Dicas para quem está começando
- Evite definir
Access-Control-Allow-Origin: *
em APIs com informações sensíveis. - Sempre restrinja os métodos HTTP e cabeçalhos permitidos.
- Responda requisições
OPTIONS
corretamente para evitar bloqueios do navegador. - Use listas de origens permitidas para maior controle sobre quem pode acessar sua API.
- Teste a configuração de CORS com ferramentas como
curl
para validar a segurança.
Contribuições de Renata Oliveira