XSS & App per pagina singola
Sto facendo ricerche sulla sicurezza Web e ho visto che l'autenticazione basata su token è utile per la prevenzione di CSRF, le architetture di sistema distribuite e le prestazioni di elaborazione.
Ma un altro problema è l'XSS. Non parlando specificamente dell'iniezione stessa, ma delle librerie. Con le app a pagina singola gli sviluppatori normalmente includono centinaia di moduli diversi nel loro codice, che potrebbero in seguito essere eseguiti maliziosamente quando l'app è in produzione.
Patching XMLHttpRequest
Quindi mi è venuta l'idea di applicare la patch alla proprietà XMLHttpRequest e assumere il controllo della funzione "codice nativo" originale, evitando che il codice di terze parti effettuasse richieste di tipo jax.
(function () {
// my code
let XHR = window.XMLHttpRequest
window.XMLHttpRequest = null
})()
// load third-party code after...
Ho provato questo nella console con facebook e youtube ... tutti i loro contenuti caricati ajax smettono di funzionare.
Esempio dannoso
Un esempio di comportamento malevolo non protetto è il codice che viene eseguito solo in produzione controllando se window.location è qualcosa come "app.x.com", quindi lo sviluppatore non si rende conto delle richieste ajax durante lo sviluppo.
L'applicazione della patch alla proprietà XMLHttpRequest lo avrebbe impedito, e tenendo conto che tutti gli altri parametri sono stati presi per prevenire l'XSS (sanitizzazione), questo avrebbe chiuso il gap finale e permesso di prendere il controllo delle richieste di rete, impedendo al codice dannoso di rubare l'autenticazione token.
Dubbio finale
Ci sono dei caveat a questo approccio? (Sicurezza-saggio)