¿Por qué los navegadores tienen políticas del mismo origen cuando existen soluciones alternativas como JSONP y CORS?

Esta pregunta es una especie de duplicado de:Por qué la misma política de origen para XMLHttpRequest

Sin embargo, esta respuesta no es satisfactoria porque no aborda el hecho de que existen soluciones alternativas (como se indica en la pregunta). La respuesta solo aborda problemas de seguridad relacionados directamente con XMLHttpRequest, pero estos problemas aún están presentes con JSONP (y posiblemente CORS, no estoy seguro). Entonces, la pregunta sigue siendo: ¿por qué tener una política estricta del mismo origen cuando hay soluciones alternativas como JSONP que podría decirse que es aún peor (porque es ejecutable en lugar de contenido estático)?

Aquí hay un ejemplo: Company.com quiere hacer una llamada AJAX a algún recurso desprotegido, como una API pública simple para alguna búsqueda de datos. Company.com se da cuenta de que esto puede ser inseguro, por lo que examinarán cuidadosamente los datos para asegurarse de que no haya negocios divertidos. Sin embargo, XMLHttpRequest no permite esto, por lo que Company.com debe usar JSONP, pero esto evitaría la eliminación de datos y podría provocar que un atacante inyecte Javascript arbitrario en la página. ¿Cómo es esta una mejor solución?

Otro ejemplo: Company.com tiene una vulnerabilidad y un atacante puede inyectar Javascript en la página que luego puede ser visto por algún usuario (hay un millón de formas en que esto puede suceder; es probable que sea el ataque al sitio web más común). Con una política estricta del mismo origen, el atacante puede meterse con la página todo el día, pero no puede "llamar a casa", lo cual es un detalle importante porque significa que todos sus datos están seguros. Pero JSONP (y las etiquetas de imagen) rompen esto al permitir que el atacante raspe todos sus datos personales de la página y los envíe a donde sea. Esto sigue siendo una realidad incluso con CORS porque puedo decirle a mi servidor falso que permita solicitudes entrantes de XS desde cualquier dominio.

En otras palabras, ¿en qué escenario un XMLHttpRequest bloqueado realmente proporciona un mayor grado de seguridad?

Respuestas a la pregunta(1)

Su respuesta a la pregunta