Questo codice JavaScript è vulnerabile agli XSS basati su DOM?

1

Ho un codice JS sotto che sta reindirizzando verso una posizione presa da un modulo HTML. È vulnerabile a un attacco come XSS basato su DOM?

document.theform.reference.onchange = function(){
    var id = document.theform.reference.selectedIndex;
    var url = document.theform.reference[id].value;
    window.location.href = url;
}
    
posta Dave Mn 30.07.2015 - 15:08
fonte

3 risposte

3

Sì, è vulnerabile se document.theform.reference[id].value può essere un valore controllato da un altro utente.

Se questo valore è stato impostato su javascript:alert('xss') da un utente malintenzionato, la riga

window.location.href = url;

causerebbe l'esecuzione dello script nel contesto del dominio corrente per qualsiasi utente stia attualmente utilizzando il sito.

    
risposta data 30.07.2015 - 18:01
fonte
0

Guardando il codice, presumo che l'utente stia inserendo il parametro URL in un modulo.

Come ha detto @SilverlightFox, un utente malintenzionato potrebbe immettere javascript:alert('xss') nel modulo, e questo eseguirà il JS, ma solo nel suo browser. Dato che il parametro URL non fa parte dell'URL del sito web (sia come parametro GET che in qualche altro modo) e non è memorizzato da nessuna parte, non vedo come un utente malintenzionato possa far eseguire a un altro utente il codice JS, salvo convincerlo a farlo manualmente inserisci il codice dannoso nel modulo.

Ma dal momento che l'XSS è un argomento complicato e non ho informazioni sull'intero codice dell'applicazione, vorrei comunque prendere alcune precauzioni.

Innanzitutto, è importante limitare gli URL che un utente può inserire. Hardcode l'inizio dell'URL, almeno la parte http: //. Ciò assicurerebbe che nessuno possa inserire un URL con un protocollo diverso come javascript:.

Inoltre, se possibile, limita gli URL che possono essere inseriti solo nel tuo dominio. Se un utente può entrare in altri domini, invia un avviso che sta lasciando il tuo sito.

Se stai inserendo il parametro url in qualsiasi altro punto del codice, assicurati di utilizzare la codifica di output corretta.

    
risposta data 31.07.2015 - 10:06
fonte
0

Sì, è vulnerabile agli XSS basati su DOM. Puoi consultare questo esempio di Wikipedia per scoprire come l'utente malintenzionato può utilizzare questa vulnerabilità per accedere al browser della vittima.

    
risposta data 31.07.2015 - 10:29
fonte

Leggi altre domande sui tag