2010-06-19 15 views
7

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=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;> // will work apparently 
    <IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041> // will work apparently 
    <IMG SRC="jav ascript:alert('XSS');"> // will work apparently 
    <IMG SRC="jav&#x09;ascript:alert('XSS');">// will work apparently 
    <IMG SRC="jav&#x0A;ascript:alert('XSS');"> // will work apparently 
    <IMG SRC="jav&#x0D;ascript:alert('XSS');"> // will work apparently 

http://ha.ckers.org/xss.html

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.

+0

quizás haga un chequeo de URL correctamente desglosado para la fuente? –

+2

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

Respuesta

6

Parece que quiere borrar javascript, y para eso hay una buena solución para usted en C# /. Net.

Descargar Microsoft Web Protection Library de CodePlex.

Si ejecuta su fragmento de HTML a través Microsoft.Security.Application.AntiXss.GetSafeHtmlFragment(html) entonces usted va a terminar con esta salida:

<img src=""> // will work apparently 
<img src=""> // will work apparently 
<img src=""> // will work apparently 
<img src="">// will work apparently 
<img src=""> // will work apparently 
<img src=""> // will work apparently 

Toda la escritura limpiado.

+0

Hmm esto parece genial. Habla de una lista blanca ¿tiene capacidad de listado en blanco? Hice una lista blanca a través del paquete de agilidad html y ahora me pregunto si esto podría haberlo hecho todo. – chobo2

+0

¿Tiene algún tutorial sobre cómo usarlo y qué puede hacer? – chobo2

+0

No lo he usado tanto, pero descargue el código fuente de http://wpl.codeplex.com/SourceControl/list/changesets y revise los documentos y las aplicaciones de muestra. –

0

hacer una página decir redir Ahora, después de envío de formularios toma valor todo de atributo src y reemplazarlo con redir?src=theExactValueHere ahora que el programa redir Primero descarga el valor del parámetro GET src (que es el tiempo el valor del atributo src real) de serverside y luego Adelante el contenido tal como está incluido exactamente el mismo MIME/tipo , también puede verificar el valor del atributo y luego redireccionar el encabezado también.

Hay incluso más formas Pero creo que esto sería más simple y confiable también.

Cuestiones relacionadas