Primero, el https://vulnerable.com/<scRIPt>alert("XSSed!");</scriPT>
no es peligroso para usted, ya que está preguntando (preguntar no significa analizar y ejecutarlo localmente) acerca de un recurso / ruta (aquí está <scRIPt>alert("XSSed!");</scriPT>
).
De hecho, esto es XSSing el servidor por el cliente. Y realmente creo que tenemos un servidor tan malvado que realmente ejecuta la ruta solicitada como script localmente (en el servidor). A menos que un estudiante lo haga para investigar y aprender cosas (sí, asumamos el camino solicitado como un script y lo ejecutemos localmente, se ve muy impresionante).
A veces, el virtualizador que mencionaste lo hará peligroso para ti, considerando que hay una página html que tiene un script y analiza la ruta de la URL y coloca el valor dentro de algún div, por ejemplo, como sigue:
La ruta (URI) se parece a la siguiente
http(s)://noob_made.awesome/user={name_of_the_user}
Y ahora la parte del script dentro de la página
function a_student_did_this(){//on body load maybe!
var user_name=...;//grab the user from url param user
document.write('Hello '+user_name);//why?
return true;//indeed
}
Y ahora, si asume que llama a la página como sigue
http(s)://noob_made.awesome/user=<scRIPt>alert("XSSed!");</scriPT>
su navegador (no probado) PODRÍA asumir que el usuario es un script y realmente ejecutarlo, muy peligroso.
Primero , nunca hagas eso realmente cuando crees que es posible obtener XSSed, especialmente cuando no es seguro (HTTP). Pero, de hecho, tanto HTTPS como HTTP funcionarán igual para usted en la virtualización que mencionó.
Segundo , incluso si no hay ninguna forma en el mundo y estás cansado de volver a buscar una alternativa, así que al menos arréglalo y hazlo de una manera que no sea XSSable, por ejemplo como sigue
function a_jounior_student_did_this(){//but still in worst way
var user_name=...;//grab the user from url param user
user_name=encode_the_string(username);//encode it first
user_name='<!CDATA['+user_name+']]>';//not it's not parsable
document.write('Hello '+user_name);//could be safer now
return true;//hmm
}
Como el siguiente código ahora actúa como CDATA (* no * datos de caracteres), y el navegador (si el mismo alumno no codificó el navegador) se supone que solo debe obtener los datos dentro de CDATA en una cadena simple.
Sus preguntas: , de hecho, los sitios de virtualización que mencionó son tan inteligentes que nunca ejecutarán un script ellos mismos (actuarán más como un proxy para usted). ejecutado por el nodo de destino
Pero he visto servicios (es emulador de IE, creo que si tiene búsqueda) que toman la página que especificó, tomen una imagen de su renderización y responden a una imagen. pero, por supuesto, no puede obtener información sobre si es buena o mala con una imagen renderizada
Incluso si los servicios ejecutan el script, es casi
imposible hacer un grave daño
explícito al cliente objetivo. Pero debe culparse a sí mismo si la secuencia de comandos lo redirecciona para descargar algo y, peor aún, lo obtiene y lo ejecuta, o si una página le pide que pague alguna factura (¿por una buena razón?).
La escuela W3 que mencionaste casi no hace nada especialmente por ti, sino que te facilita la codificación, lo mismo que con jsfiddle, etc.
Tampoco hay ninguna relación directa entre
link shortener
y XSS. Nuevamente, ya que finalmente necesita cargar e invocar los scripts en el cliente de destino.
Un acortador de enlaces solo mantiene el enlace asociado con algo, y para cualquier invocación para un enlace corto dado,
el usuario es redirigido .
Dato 0 : si una página o un servidor es XSSable, entonces es culpa de usted (programador). Solo tómate un poco más de tiempo para estudiar y haz el trabajo bien. Al igual que la inyección SQL de la vieja escuela (¡que todavía vive en algunos sitios!), su hermano XSS también podría mantenerse.
Dato 1 : obviamente, PUEDES evitar el ataque XSS en tu servidor si lo haces correctamente. Ya que es casi posible para el cliente también (javascript), pero como mencioné, otra vez XSS en el cliente no tendrá problemas explícitos y peligrosos a menos que el usuario actúe realmente mal.