¿Cómo protege CORS a los usuarios?
![¿Cómo protege CORS a los usuarios? ¿Cómo protege CORS a los usuarios?](https://i3.wp.com/pypixel.com/wp-content/uploads/2024/01/How-to-add-AirPods-to-Find-My-iPhone-3.png?w=1920&resize=1920,1080&ssl=1)
CORS (intercambio de recursos entre orígenes) se convirtió en un mecanismo de seguridad integral que restringe la forma en que las aplicaciones web acceden a recursos de otros dominios. De forma predeterminada, los navegadores bloquean las solicitudes HTTP de origen cruzado para evitar actividades maliciosas.
En esta publicación de blog, veremos cómo CORS protege exactamente a los usuarios, por qué las protecciones entre orígenes son importantes para los usuarios y cómo diseñar API de manera responsable y cómo los clientes explotan las capacidades de CORS por motivos de seguridad.
¿Qué es CORS?
CORS es una característica de seguridad que se implementa en los navegadores web para evitar ataques maliciosos. Es un mecanismo que permite a los servidores web especificar qué dominios pueden acceder a sus recursos. Esto se hace agregando encabezados específicos a las respuestas HTTP que se envían desde el servidor al cliente.
El mecanismo CORS funciona agregando un paso adicional al proceso de solicitud/respuesta HTTP estándar. Cuando un cliente envía una solicitud a un servidor, el servidor responde con un conjunto de encabezados que especifican qué dominios pueden acceder a sus recursos. Si el dominio del cliente no está en la lista de dominios permitidos, el navegador bloquea la respuesta del servidor.
¿Por qué CORS es importante para la seguridad web?
CORS es importante para la seguridad web porque previene ataques maliciosos que pueden lanzarse al explotar vulnerabilidades en las aplicaciones web. Por ejemplo, si una aplicación web permite ataques de secuencias de comandos entre sitios (XSS), un atacante puede inyectar código malicioso en la aplicación y robar información confidencial de los usuarios.
CORS previene ataques XSS bloqueando solicitudes de dominios que no están autorizados a acceder a los recursos del servidor. Esto significa que incluso si un atacante inyecta código malicioso en una aplicación web, el navegador bloqueará la solicitud y evitará que el atacante acceda a información confidencial.
CORS también previene ataques de falsificación de solicitudes entre sitios (CSRF). En un ataque CSRF, un atacante engaña a un usuario para que realice una acción en un sitio web sin su conocimiento o consentimiento. Por ejemplo, un atacante puede crear un formulario de inicio de sesión falso en su propio sitio web y engañar a los usuarios para que ingresen sus credenciales de inicio de sesión. Luego, el atacante puede utilizar estas credenciales para iniciar sesión en la cuenta del usuario en el sitio web legítimo y realizar acciones en su nombre.
CORS previene los ataques CSRF al bloquear solicitudes de dominios que no están autorizados a acceder a los recursos del servidor. Esto significa que incluso si un atacante crea un formulario de inicio de sesión falso en su propio sitio web, el navegador bloqueará la solicitud e impedirá que el atacante acceda a la cuenta del usuario.
¿Cómo funciona CORS?
CORS estandariza una verificación previa al vuelo a nivel del navegador que se realiza en algunas solicitudes de origen cruzado antes de permitirlas:
External malicious site (evil-site.com) --> API server (api.good-site.com)
![Cómo CORS protege a los usuarios](https://pypixel.com/wp-content/uploads/2024/01/Untitled-design-1024x576.png)
Esto es lo que sucede en la verificación CORS:
- El navegador detecta una solicitud HTTP realizada a otro recurso de origen.
- Una solicitud automática de OPCIONES previa al vuelo pregunta al servidor API si se permite el acceso entre orígenes desde el origen de la persona que llama.
- El servidor API evalúa si el origen está permitido comprobando los encabezados HTTP y responde permitiendo o denegando el acceso.
- El navegador ahora bloquea o permite la solicitud de origen cruzado actual según la verificación previa al vuelo.
Este protocolo de enlace de verificación previa garantiza que los servidores autoricen explícitamente a las personas que llaman de orígenes cruzados en lugar de confiar ciegamente en todos los sitios. Múltiples puntos de control de acceso actúan juntos para proteger a los usuarios al nivel de la propia infraestructura.
CORS opera a través de una serie de encabezados HTTP intercambiados entre el navegador y el servidor. Estos encabezados transmiten información sobre los permisos otorgados para solicitudes de origen cruzado. Analicemos los componentes principales de CORS:
- Encabezado de origen:
- Cuando su navegador realiza una solicitud de origen cruzado, incluye un encabezado «Origen» en la solicitud HTTP. Este encabezado especifica el origen (dominio, protocolo y puerto) de la página solicitante.
- Encabezado Access-Control-Enable-Origin:
- El servidor, a su vez, responde con un encabezado «Access-Control-Allow-Origin», que indica qué orígenes tienen permiso para acceder a sus recursos. Si se permite el origen de la solicitud, el navegador continúa con la solicitud.
- Encabezados adicionales:
- CORS admite otros encabezados como «Access-Control-Allow-Methods», «Access-Control-Allow-Headers» y «Access-Control-Allow-Credentials», que brindan control detallado sobre los tipos de solicitudes e información que pueden ser intercambiado.
¿Cuáles son los escenarios CORS comunes?
Ahora, exploremos algunos escenarios comunes para comprender cómo funciona CORS en situaciones del mundo real.
- Solicitudes simples:
- Los navegadores permiten automáticamente solicitudes simples, como GET o POST con tipos de contenido específicos. En estos casos no se realiza ninguna solicitud previa al vuelo, lo que simplifica el proceso y mejora el rendimiento.
- Solicitudes previas al vuelo:
- Para solicitudes más complejas (por ejemplo, aquellas que involucran encabezados o métodos personalizados), los navegadores envían una solicitud previa al vuelo utilizando el método HTTP OPTIONS. El servidor responde con los encabezados CORS apropiados, indicando si la solicitud actual puede continuar.
Implicaciones de seguridad
CORS es un actor crucial en el juego de la seguridad web, pero como cualquier tecnología, es esencial comprender sus limitaciones. Si bien CORS previene ciertos tipos de ataques entre orígenes, no elimina todos los riesgos de seguridad.
- Exposición de datos sensibles:
- Si un servidor responde a una solicitud de origen cruzado con información confidencial, incluso si la solicitud es legítima, puede exponer datos confidenciales. Es fundamental que los desarrolladores se aseguren de que solo se comparta la información necesaria en las respuestas entre orígenes.
- CSRF (falsificación de solicitudes entre sitios):
- CORS no protege contra ataques CSRF, donde un sitio web malicioso engaña al navegador de un usuario para que realice solicitudes no deseadas a un sitio diferente. Implementar medidas de seguridad adicionales, como tokens anti-CSRF, es esencial para mitigar este riesgo.
¿Cuáles son las mejores prácticas para la implementación de CORS?
Para maximizar la eficacia de CORS, los desarrolladores deben seguir las mejores prácticas:
- Origen específico:
- Sea específico sobre qué orígenes pueden acceder a sus recursos. Evite el uso de caracteres comodín
- a menos que sea absolutamente necesario, ya que esto podría abrir la puerta a posibles vulnerabilidades de seguridad.
- Utilice HTTPS:
- Utilice siempre HTTPS para proteger los datos en tránsito. Los navegadores imponen reglas CORS más estrictas para conexiones HTTP inseguras y el uso de HTTPS es una práctica fundamental para la seguridad web general.
- Minimizar acceso:
Exponga solo los recursos necesarios para el acceso entre orígenes. Limite los tipos de solicitudes e información que se pueden compartir para reducir el riesgo de exposición de datos.
Reflexiones finales: ¿Cómo protege CORS a los usuarios?
CORS es una característica de seguridad importante que se implementa en los navegadores web para proteger a los usuarios de ataques maliciosos. Funciona agregando encabezados específicos a las respuestas HTTP que se envían desde el servidor al cliente. Estos encabezados especifican qué dominios pueden acceder a los recursos del servidor. Con la función de bloquear solicitudes de dominios no autorizados, CORS previene los ataques XSS y CSRF que pueden lanzarse al explotar vulnerabilidades en aplicaciones web.
Como usuario, es importante conocer las funciones de seguridad implementadas en los navegadores web y tomar medidas para proteger su información personal.
Leer más:
Preguntas frecuentes
¿Qué es CORS y por qué es necesario?
CORS significa intercambio de recursos entre orígenes. Es un estándar de seguridad que restringe las solicitudes HTTP de origen cruzado en los navegadores de forma predeterminada para proteger los datos del usuario del acceso malicioso en sitios no afiliados.
¿Cómo protege CORS a los usuarios finales?
CORS introduce comprobaciones del navegador previas al vuelo antes de permitir solicitudes de origen cruzado. Luego, el servidor API autoriza explícitamente dominios, protocolos y métodos externos específicos a los que se les permite acceder a los recursos. Este acceso a los recintos.
¿Cuándo el navegador habilita los controles CORS?
Las comprobaciones de CORS se producen automáticamente en solicitudes de orígenes cruzados realizadas por JavaScript a puntos finales con diferentes dominios, protocolos o puertos que violan la política del mismo origen.
¿Cómo pueden las API habilitar CORS de forma segura?
Configure los encabezados Access-Control-Allow-Origin en las respuestas de API para incluir en la lista blanca los dominios confiables. Valide orígenes, tokens, métodos y credenciales para permitir solo el acceso legítimo. Utilice permisos de alcance corto.
¿Deberían permitirse todas las reclamaciones de origen cruzado?
No, las API deben compartir el acceso con terceros no afiliados. Los sitios externos deben pasar por flujos de consentimiento. Consulte la API central solo para aplicaciones propias.
¿Cómo puede el front-end de JavaScript utilizar CORS de forma segura?
Estructura el código para llamar solo a las API de origen en las que tu dominio confía o validar a terceros antes del acceso. Los datos de uso anónimos pueden ir a utilidades como análisis después del consentimiento del usuario.
¿Habilitar CORS significa permitir el acceso público a la API?
Al menos nada. Un CORS bien configurado mejora la seguridad al estandarizar las comprobaciones entre orígenes que de otro modo serían opacas para los navegadores. Los controles de acceso público versus privado aún deberían regir las API.
¿Cuáles son las mejores prácticas para la seguridad CORS?
Valide estrictamente los sitios de origen, utilice tokens de acceso de corta duración, minimice los datos transferidos entre orígenes, habilite otros encabezados de defensa en profundidad y registre las infracciones.
¿Se pueden alguna vez configurar mal las políticas CORS por pérdida de datos?
Sí, las políticas CORS demasiado permisivas que confían en orígenes no autorizados definitivamente pueden provocar fugas de datos. Valide y pruebe las configuraciones rigurosamente.
¿CORS maneja todas las vulnerabilidades entre orígenes?
CORS bloquea específicamente el acceso a la API. Las protecciones adicionales entre orígenes, como los filtros XSS, los encabezados CSP y la protección de seguimiento, trabajan juntas para reforzar la seguridad del navegador.
Source link