2010-12-29 15 views

Respuesta

10

Una dirección URL válida todavía puede contener un vector de ataque:

<!--- No on CF9 ---> 
<cfoutput>#isValid("url", "http://www.mydomain.com/products/products.asp?productid=123; DROP TABLE Products")#</cfoutput> 

<!--- Yes on CF9: hex encoded ';DROP TABLE Products' ---> 
<cfoutput>#isValid("url", "http://www.mydomain.com/products/products.asp?productid=123%3B%20%44%52%4F%50%20%54%41%42%4C%45%20%50%72%6F%64%75%63%74%73")#</cfoutput> 

Por supuesto lo anterior no es un ataque XSS, pero podría ser cambiado para actualizar lugar columnas con un ataque.

La validación del correo electrónico parece prevenir the attacks I could find.

Como una generalización, isValid() ayuda a prevenir ataques XSS cuando el tipo de datos es finito - enteros, números de seguro social, UUID, etc .. Sin embargo, there's a laundry list of documented potential attacks contra los campos cuyo único tipo de datos per se 'cadena'. En ese caso, isValid() no es de ayuda, más bien OWASP's AntiSamy es una herramienta útil para este propósito que atraviesa el DOM y elimina todo lo que no está incluido en la lista blanca.

Best regex to catch XSS (Cross-site Scripting) attack (in Java)? proporciona mucha información útil sobre el tema general de la prevención de XSS.

Y finalmente agotar el tema, utilice:

<cfqueryparam cfsqltype="..." value="..."> 

to protect queries.

actualización

Por último, pero no menos importante, OWASP XSS Cheat Sheet: mejor conjunto de heurísticas que hay para procesar la entrada para evitar XSS.