IsValid()是否可以防止XSS?

时间:2010-12-29 00:35:40

标签: validation email url coldfusion xss

使用IsValid()验证电子邮件地址或网址格式是否可以保护XSS?当指定其他格式时,它是否会否定XSS?

1 个答案:

答案 0 :(得分:10)

有效的网址仍然可以包含攻击媒介:

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

当然,上述不是XSS攻击,但可以更改为使用攻击更新列。

电子邮件验证似乎会阻止the attacks I could find

作为概括,isValid()有助于防止数据类型为有限时的XSS攻击 - 整数,SSN,UUID等。但是,there's a laundry list of documented potential attacks针对其唯一数据类型本身为“字符串”的字段。OWASP's AntiSamy。在这种情况下,isValid()没有任何帮助,而Best regex to catch XSS (Cross-site Scripting) attack (in Java)?是用于此目的的有用工具,它遍历DOM并删除未列入白名单的任何内容。

to protect queries提供了有关XSS预防一般主题的大量有用信息。

最后要说明问题,请使用:

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

OWASP XSS Cheat Sheet

<强>更新

最后但并非最不重要的是,{{3}}:用于处理输入以防止XSS的最佳启发式设置。