【发布时间】:2023-11-24 19:56:02
【问题描述】:
使用IsValid() 验证电子邮件地址或 URL 格式是否可以防止 XSS?指定其他格式时是否否定XSS?
【问题讨论】:
标签: validation email url coldfusion xss
使用IsValid() 验证电子邮件地址或 URL 格式是否可以防止 XSS?指定其他格式时是否否定XSS?
【问题讨论】:
标签: validation email url coldfusion xss
有效的 URL 仍然可以包含攻击向量:
<!--- 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 针对本身唯一数据类型为“字符串”的字段。在这种情况下,isValid() 没有任何帮助,而OWASP's AntiSamy 是一个有用的工具,它可以遍历 DOM 并删除任何未列入白名单的内容。
Best regex to catch XSS (Cross-site Scripting) attack (in Java)? 提供了很多关于 XSS 预防的一般主题的有用信息。
最后再强调一点,使用:
<cfqueryparam cfsqltype="..." value="...">
更新
最后,OWASP XSS Cheat Sheet:处理输入以防止 XSS 的最佳启发式方法。
【讨论】: