Estoy desarrollando una API web JSON/REST, para la cual deseo específicamente que los sitios web de terceros puedan llamar a mi servicio a través de AJAX. Por lo tanto, mi servicio está enviando el famoso encabezado CORS:¿Cuándo es seguro activar CORS?
Access-Control-Allow-Origin: *
que permite a los sitios de terceros que llamar a mi servicio a través de AJAX. Todo bien hasta ahora.
Sin embargo, una subsección de mi API web no es pública y requiere autenticación (material bastante estándar con OAuth y una cookie access_token). ¿Es seguro habilitar CORS en esta parte de mi sitio también?
Por un lado, sería genial si los sitios web de terceros pudieran tener clientes jajax que también interactúen con esta parte de mi servicio. Sin embargo, la razón de que haya una misma política de origen en primer lugar es que esto podría ser riesgoso. No desea que ningún sitio web que visite después pueda acceder a su contenido privado.
El escenario que me da miedo es que un usuario inicie sesión en mi API web, ya sea en el sitio web oa través de un sitio web en el que confía, y se olvida de cerrar la sesión. ¿Permitirá esto que cada otro sitio web que visita después tenga acceso a su contenido privado utilizando la sesión existente?
Así que mis preguntas:
- ¿Alguna vez es segura para permitir CORS sobre el contenido no pública?
- Si un servidor CORS habilitado establece un session_token a través de una cookie, ¿se guardará esta cookie en el dominio del servidor CORS o del servidor principal de la página web?
Tenga en cuenta que solo puede enviar los encabezados CORS a los recursos a los que desea que otros accedan desde otros orígenes. Y también podría limitar el acceso de CORS a solo los orígenes de los que espera el uso. –
Idealmente, quisiera que todos los recursos sean accesibles desde cualquier origen, si la seguridad lo permite. Depende del usuario proporcionar credenciales válidas. Solo quiero asegurarme de no abrir la puerta a ataques de scripts cruzados desde sitios web maliciosos. – Jeroen