Ya no sé qué pensar. Parece que las personas que hicieron javascript salieron de su camino para permitir que se escriban de un millón de formas diferentes para que los hackers puedan tener un día de campo.¿Cómo luchas contra todas estas formas? -Javascript y sus millones de formas diferentes de escribirlo
Finalmente obtuve mi lista blanca utilizando el paquete html agility. Debe eliminar
<scrpit></script>
Como no está en mi lista blanca más cualquier onclick, etc. onmouse y
Sin embargo, ahora parece que se puede escribir javascript en las etiquetas de los atributos.
<IMG SRC="javascript:alert('hi');">
y como permito los atributos SRC, mi lista blanca no puede ayudarme en esto. Así que se me ocurrió la idea de ir a través de todos los atributos válidos al final y mirar dentro de ellos.
De modo que encontraría todos mis atributos permitidos para cada etiqueta html (por lo que src, href y etc.).
Encontré el texto y lo puse en minúscula. Luego hice una verificación de índice en esta cadena para "javascript".
Si se encontró un índice comencé en ese índice y quité todos los caracteres de ese índice. Entonces, en el caso anterior, el atributo se quedaría con Src = "".
Ahora parece que no es suficiente ya que se puede hacer algo como
java script jav ascript
y, probablemente, un espacio entre cada letra.
Así que no sé cómo detenerlo. Si fuera solo un espacio entre Java y script, entonces podría escribir una expresión regular simple que no importara cuántos espacios entre. Pero si realmente es que puedes poner un espacio o una pestaña o lo que sea después de cada letra, entonces no tengo ni idea.
A continuación, por si fuera poco se puede hacer todas estas otras formas también grandes
<IMG SRC=javascript:alert('XSS')> // will work apparently
<IMG SRC=javascript:alert('XSS')> // will work apparently
<IMG SRC="jav ascript:alert('XSS');"> // will work apparently
<IMG SRC="jav	ascript:alert('XSS');">// will work apparently
<IMG SRC="jav
ascript:alert('XSS');"> // will work apparently
<IMG SRC="jav
ascript:alert('XSS');"> // will work apparently
Sé que esto es por algún ataque de secuencias de comandos entre (no estoy haciendo una asp.net mvc XSS hace un buen trabajo de esto) pero no veo por qué no se puede usar para otras cosas, como en todos esos ejemplos, hace alertas para que pueda usarse para otra cosa.
Así que no tengo ni idea de cómo comprobar y eliminar cualquiera de estos.
estoy usando C#, pero no sé cómo detener cualquiera de estos y no saben de nada en C# que me podría ayudar.
quizás haga un chequeo de URL correctamente desglosado para la fuente? –
Este tema trata acerca de las muchas maneras en que un código ** HTML ** puede ejecutar JS, no sobre JS. Por una vez, JS no es culpable :) – FelipeAls