È una misura di sicurezza, come implica la descrizione nel codice. Il iframe
funge da meccanismo di protezione contro XSS sfrutta attraverso misure personalizzate dei contro questi stessi tipi di attacco impedendo l'accesso JavaScript ai frame e agli iframe quando non sono pubblicati sullo stesso dominio. Non è davvero necessario scrivere questa parte di HTML direttamente nel documento, poiché potrebbe anche essere scritta dallo stesso JavaScript che sta manipolando il suo contenuto, ma lo sviluppatore di questa soluzione probabilmente voleva rendere chiaro agli sviluppatori futuri che alcuni script esterni stanno verificando il modulo di accesso prima di essere pubblicato e che i meccanismi di prevenzione XSS del browser sono utilizzati per ottenere una migliore sicurezza dell'utente finale durante l'accesso. Ciò è anche strongmente implicito dalla mancanza di un ID per l'iframe, che renderebbe molto più facile la referenziazione.
Lo sviluppatore quindi assocerebbe un elemento script
JavaScript a iframe
DOM con un codice simile a questo:
window.onload = function () {
var iframe = document.createElement('iframe');
iframe.width = "0px";
iframe.height = "0px";
iframe.style.visibility = "hidden";
iframe.id = "noXSSframe";
iframe.setAttribute("src", "about:blank");
document.getElementById("formID").appendChild(iframe);
iframe.addEventListener('load', function (e) {
var myElement = document.createElement('script');
myElement.setAttribute('src', '/content/test.js');
myElement.setAttribute('type', 'text/javascript');
iframe.contentDocument.body.appendChild(myElement);
}, false);
}
Questo è solo un esempio e non è necessariamente lo stesso metodo scelto dal tuo sviluppatore, ma dovrebbe essere sufficiente per scopi dimostrativi.
Questo file JavaScript esterno che è stato appena collegato all'iframe verrà quindi scritto in modo tale da tenere conto di essere eseguito attraverso un iframe, facendo riferimento a un oggetto documento principale in modo che sia consentito solo uno script situato nello stesso dominio, mentre eventuali iniezioni XSS che sostituiscono lo script chiamato con uno script ospitato al di fuori del dominio del documento principale, sarebbe chiaramente negato l'accesso ai browser stessi. L'unico modo per impedire ai browser di applicare la stessa politica di origine per XMLHttpRequests è collegando intestazioni aggiuntive alla risposta HTTP del server e consentendo esplicitamente risorsa cross-origin condivisione (CORS) . Questo però non è qualcosa che le iniezioni XSS da sole possono manomettere.
In breve, è un modo elegante per assicurarsi che il codice JavaScript responsabile della manipolazione, verifica e pubblicazione di un modulo di accesso (preparazione e avvio di una richiesta HTTP) sia effettivamente caricato da un file ospitato nello stesso dominio del registro -in forma è attiva, prevenendo efficacemente le iniezioni XSS. Allo stesso tempo, impedisce anche ai siti di phishing di riutilizzare questo modulo di accesso e di inviare richieste di accesso a un altro dominio, se lo script iframe esegue una verifica aggiuntiva, allegando valori di risposta univoci che possono essere verificati da server a fine del modulo POST richiesta.