Access-Control-Allow-Origin
tiene un significado diferente al de simplemente evitar CSRF: impide que el script que realiza la solicitud pueda obtener el resultado de la solicitud.
Lo mismo se aplica a Access-Control-Allow-Credentials
. Este encabezado permite que el script obtenga la respuesta de una solicitud con credenciales. Tenga en cuenta que no puede usar el comodín *
para Access-Control-Allow-Origin
al enviar Access-Control-Allow-Credentials: true
. pero puedes usar el valor del encabezado de solicitud Origin
.
La implicación es: ¿Qué podría hacer un script con el contenido de su sitio?
- Si el usuario ha iniciado sesión, un script puede obtener todos los sitios que puede ver, analizarlo y enviar los datos (tal vez confidenciales) a su origen.
- Si incluye algún tipo de token anti-CSRF en formularios / enlaces, podrían obtener el valor del token y hacer una solicitud con ese token válido.
- Puede actuar en la página en nombre del usuario.
Para XSS depende de lo que quieras decir con XSS. Si quiere decir con XSS que otro script actúa sobre bealf de un usuario, entonces ya lo ha permitido.
Entonces, al agregar a un sitio remoto solo se revelan algunas informaciones al sitio de origen (como el tiempo para cargarlo), la fuga de información (especialmente para los usuarios que han iniciado sesión) puede ser mucho mayor.
Como nota adicional: use el encabezado Origin
si está presente para bloquear las solicitudes.