¿Es este código JavaScript vulnerable a DOM basado en XSS?

1

Tengo un código JS debajo que está redirigiendo a una ubicación tomada de un formulario HTML. ¿Es esto vulnerable a un ataque como XSS basado en DOM?

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

3 respuestas

3

Sí, es vulnerable si document.theform.reference[id].value puede ser un valor controlado por otro usuario.

Si un atacante estableció este valor en javascript:alert('xss') , la línea

window.location.href = url;

provocaría que la secuencia de comandos se ejecute en el contexto del dominio actual para cualquier usuario que esté usando el sitio actualmente.

    
respondido por el SilverlightFox 30.07.2015 - 18:01
fuente
0

Al mirar el código, asumo que el usuario está ingresando el parámetro de URL en un formulario.

Como dijo @SilverlightFox, un atacante podría ingresar javascript:alert('xss') en el formulario, y eso ejecutaría el JS, pero solo en su navegador. Dado que el parámetro de la URL no es parte de la URL del sitio web (ya sea como un parámetro GET o de alguna otra manera) y no está almacenado en ninguna parte, no veo una forma en que un atacante pueda hacer que otro usuario ejecute el código JS, excepto convencerlo de que lo haga manualmente. ingrese el código malicioso en el formulario.

Pero como XSS es un tema complicado, y no tengo una idea de todo el código de la aplicación, todavía tomaría algunas precauciones.

Primero, es importante limitar las URL que un usuario puede ingresar. Codifique al inicio de la URL, al menos la parte http: //. Eso aseguraría que nadie pueda ingresar una URL con un protocolo diferente como javascript :.

Además, si es posible, limite las URL que solo se pueden ingresar a su dominio. Si un usuario puede ingresar otros dominios, emita una advertencia de que está abandonando su sitio.

Si está insertando el parámetro url en cualquier otra parte del código, asegúrese de usar la codificación de salida adecuada.

    
respondido por el pineappleman 31.07.2015 - 10:06
fuente
0

Sí, es vulnerable a XSS basado en DOM. Puede consultar este ejemplo de Wikipedia para saber cómo el atacante puede usar esta vulnerabilidad para obtener acceso en el navegador de la víctima.

    
respondido por el LazyHands 31.07.2015 - 10:29
fuente

Lea otras preguntas en las etiquetas