Cross-Origin Resource Sharing (CORS) es una polÃtica de seguridad que se implementa en los navegadores web para controlar las solicitudes entre diferentes dominios web. CORS permite que un servidor especifique qué dominios externos tienen permiso para acceder a los recursos en su servidor. Esto ayuda a prevenir ataques de Cross-Origin que podrÃan explotar vulnerabilidades de seguridad al acceder a recursos desde dominios no autorizados.
A continuación, te presento algunos ejemplos para comprender cómo funciona CORS y cómo se configura en el lado del servidor:
- Configuración básica de CORS:
Supongamos que tenemos un servidor web con la API REST en
api.example.com
y queremos permitir quewww.example.com
realice solicitudes CORS. En el servidor, podemos incluir los siguientes encabezados de respuesta en las solicitudes:
Access-Control-Allow-Origin: https://www.example.com
Con esto, el servidor está configurado para permitir que solo www.example.com
realice solicitudes desde el navegador.
- Permitir todos los dominios:
En algunos casos, es posible que desees permitir que cualquier dominio realice solicitudes CORS. Para ello, puedes usar el comodÃn
*
en el encabezado de respuesta:
Access-Control-Allow-Origin: *
Sin embargo, debes tener en cuenta que esto puede ser un riesgo de seguridad, ya que permite a cualquier dominio acceder a los recursos de tu servidor.
- Especificar métodos permitidos: Además de configurar qué dominios pueden acceder, también puedes especificar qué métodos HTTP están permitidos en las solicitudes CORS:
Access-Control-Allow-Origin: https://www.example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Agregar encabezados personalizados:
Si tu aplicación necesita enviar encabezados personalizados en las solicitudes, debes configurar el encabezado Access-Control-Allow-Headers
:
Access-Control-Allow-Origin: https://www.example.com
Access-Control-Allow-Headers: Authorization, Content-Type
Esto permitirá que www.example.com
envÃe encabezados Authorization
y Content-Type
en las solicitudes CORS.
Es importante tener en cuenta que CORS se basa en la polÃtica de los navegadores web y no reemplaza otras medidas de seguridad en el lado del servidor. Siempre es esencial validar y autenticar las solicitudes en el servidor antes de responder a las solicitudes CORS permitidas. La configuración incorrecta de CORS puede conducir a vulnerabilidades de seguridad, como la exposición de datos confidenciales o la ejecución de acciones no deseadas en el servidor.