2012-07-25 11 views
10

Estoy trabajando en una aplicación web de una sola página. Estoy haciendo la representación creando directamente nodos DOM. En particular, todos los datos suministrados por el usuario se agregan a la página creando nodos de texto con document.createTextNode("user data").¿CreateTextNode está completamente a salvo de la inyección de HTML y XSS?

¿Evita este enfoque la posibilidad de inyección de HTML, scripts de sitios cruzados (XSS) y todas las otras cosas malas que los usuarios pueden hacer?

Respuesta

9

Crea un nodo de texto sin formato, así que sí, hasta donde llega.

Es posible crear un problema XSS utilizando un método inseguro para obtener los datos del canal al que se está ingresando en createTextNode.

p. Ej. El siguiente sería insegura :

document.createTextNode('<?php echo $_GET['xss']; ?>'); 

... pero el peligro es del PHP echo, no el JavaScript createTextNode.

+0

No estoy familiarizado con PHP. ¿Ese ejemplo permite al usuario solicitar datos de otro lugar y tenerlos insertados como texto en la página? –

+0

@breischl - El PHP toma la entrada de la cadena de consulta de la URL (que es datos externos) y la coloca en la salida sin escaparse. – Quentin

+0

Pero aún se emitirá como texto sin formato, sin importar lo que haya en él, ¿verdad? Entonces, ¿no podrías hacer que el navegador hiciera algo, aparte de mostrar algo de texto? –

Cuestiones relacionadas