📈 Guía Completa sobre CORS: Qué es, Cómo Funciona y Cómo Configurarlo de Forma Segura


CORS (Cross-Origin Resource Sharing) es una política de seguridad web que permite o restringe las solicitudes realizadas desde un dominio diferente al que sirve el contenido. Su correcta configuración es esencial para evitar vulnerabilidades en aplicaciones web.
📅 ¿Qué es CORS y por qué es importante?
Los navegadores implementan la Política de Origen Común (SOP), que impide que los scripts en una página web accedan a recursos en un dominio diferente al de origen. CORS es una excepción a esta regla que permite compartir recursos de forma segura entre distintos orígenes.

✅ ¿Cómo funciona CORS?
Cuando una aplicación intenta acceder a recursos desde otro dominio, el navegador sigue este proceso:
- Solicitud Preflight (Previa): Si la solicitud utiliza métodos como
PUT
,DELETE
o incluye cabeceras personalizadas, el navegador envía una solicitudOPTIONS
al servidor para verificar si permite la acción. - Cabeceras de Respuesta: Si el servidor acepta la solicitud, responde con cabeceras CORS como
Access-Control-Allow-Origin
, indicando los orígenes permitidos. - Acceso o Bloqueo: Si el navegador recibe una respuesta positiva, permite la solicitud; de lo contrario, la bloquea.

🔑 Configurar CORS correctamente en el servidor
Dependiendo del servidor, la configuración de CORS puede variar:
Ejemplo en Express.js:
const cors = require('cors');
const app = require('express')();
app.use(cors({
origin: 'https://tudominio.com',
methods: ['GET', 'POST'],
credentials: true,
}));
Ejemplo en Nginx:
add_header 'Access-Control-Allow-Origin' 'https://tudominio.com';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Credentials' 'true';
🔧 Mejores prácticas para una configuración segura
- Evita
Access-Control-Allow-Origin: *
si manejas información sensible. - Define métodos y cabeceras específicas en
Access-Control-Allow-Methods
yAccess-Control-Allow-Headers
. - Activa
Access-Control-Allow-Credentials
solo cuando sea necesario.
📀 Riesgos de una configuración incorrecta
Si CORS está mal configurado, puede permitir que sitios maliciosos realicen solicitudes en nombre del usuario autenticado, lo que podría resultar en ataques de CSRF o robo de información.
Configurar CORS correctamente es fundamental para mantener la seguridad de una aplicación web. Siguiendo buenas prácticas, podemos garantizar que nuestros recursos estén protegidos sin afectar la experiencia del usuario.
Si quieres profundizar en el tema, consulta la guía original en Devsecurely.