Después de leer sobre CORS, no entiendo cómo mejora la seguridad.
CORS no mejora la seguridad. CORS proporciona un mecanismo para que los servidores le digan a los navegadores cómo deben acceder los dominios extranjeros, e intenta hacerlo de una manera que sea consistente con el modelo de seguridad del navegador que existía antes de CORS (es decir, la Política del Mismo Origen ).
Pero la Política de Mismo Origen y CORS tienen un alcance limitado. Específicamente, la especificación CORS en sí no tiene ningún mecanismo para rechazar solicitudes. Puede usar encabezados para decirle al navegador que no permita que una página de un dominio externo lea una respuesta. Y, en el caso de las solicitudes de verificación previa, puede pedirle al navegador que no le envíe ciertas solicitudes de un dominio extranjero. Pero CORS no especifica ningún medio para que el servidor rechace (es decir, no ejecute) una solicitud real.
Pongamos un ejemplo. Un usuario inicia sesión en el sitio a A
través de una cookie. El usuario carga un sitio malicioso M
, que intenta enviar un formulario que hace un POST
a A
. ¿Lo que sucederá? Bueno, con o sin CORS, y con o sin M
ser un dominio permitido, el navegador enviará la solicitud a A
con la cookie de autorización del usuario, y el servidor ejecutará el malicioso POST
como si el usuario lo hubiera iniciado.
Este ataque se denomina Falsificación de solicitudes entre sitios y CORS no hace nada para mitigarlo. Es por eso que las protecciones CSRF son tan importantes si permite solicitudes para cambiar datos en nombre de los usuarios.
Ahora, el uso del Origin
encabezado puede ser una parte importante de su protección CSRF. De hecho, verificarlo es parte de la recomendación actual para la defensa CSRF de múltiples frentes . Pero ese uso del Origin
encabezado queda fuera de la especificación CORS.
En resumen, CORS es una especificación útil para extender el modelo de seguridad de la Política del Mismo Origen existente a otros dominios aceptados. No agrega seguridad y los sitios necesitan los mismos tipos de mecanismos de defensa que tenían antes de CORS.