2010-12-29 13 views

Antwort

10

Eine gültige URL kann immer noch einen Angriffsvektor enthalten:

<!--- 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> 

die oben Zugegeben ist kein XSS-Angriff, aber es könnte geändert werden, um stattdessen Spalten mit einem Angriff zu aktualisieren.

E-Mail-Validierung scheint zu verhindern the attacks I could find. Als Verallgemeinerung hilft isValid() XSS-Attacken zu verhindern, wenn der Datentyp endlich ist - Ganzzahlen, SSNs, UUIDs, etc .. jedoch there's a laundry list of documented potential attacks gegen Felder, deren einziger Datentyp per se "String" ist. In diesem Fall ist isValid() keine Hilfe, stattdessen ist OWASP's AntiSamy ein nützliches Werkzeug für diesen Zweck, das das DOM durchquert und alles entfernt, was nicht auf der weißen Liste steht.

Best regex to catch XSS (Cross-site Scripting) attack (in Java)? bietet viele nützliche Informationen zum allgemeinen Thema der XSS-Prävention.

Und schließlich den Punkt, Gebrauch belabor:

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

to protect queries.

aktualisieren

Last, but not least, OWASP XSS Cheat Sheet: beste Satz von Heuristiken gibt für Eingangsverarbeitungs XSS zu verhindern.

Verwandte Themen