XSS & Aplicaciones de una sola página
Estoy investigando sobre seguridad web, y he visto que autenticación basada en token es buena para la prevención de CSRF, las arquitecturas de sistemas distribuidas y el rendimiento de procesamiento.
Pero otro problema es XSS. No específicamente hablando de la inyección en sí, sino de las bibliotecas. Con las aplicaciones de una sola página, los desarrolladores normalmente incluyen cientos de módulos diferentes en su código, que luego podrían ejecutarse de manera maliciosa cuando la aplicación está en producción.
Aplicación de parches XMLHttpRequest
Así que tuve la idea de parchear la propiedad XMLHttpRequest y tomar el control de la función original "código nativo", evitando que el código de terceros realice solicitudes ajax.
(function () {
// my code
let XHR = window.XMLHttpRequest
window.XMLHttpRequest = null
})()
// load third-party code after...
Probé esto en la consola con facebook y youtube ... todo su contenido cargado de ajax deja de funcionar.
Ejemplo malicioso
Un ejemplo de comportamiento malicioso no detectado es un código que solo se ejecuta en producción al verificar si la ubicación de window es algo así como "app.x.com", por lo que el desarrollador no se da cuenta de las solicitudes de ajax durante el desarrollo.
Al parchar la propiedad XMLHttpRequest se evitaría esto, y teniendo en cuenta que se tomaron todas las demás medidas para evitar XSS (desinfección), esto cerraría la brecha final y le permitiría tomar control de las solicitudes de red, evitando que el código malicioso robe la autenticación fichas.
Duda final
¿Hay alguna advertencia a este enfoque? (seguridad)