2010-12-29 15 views

答えて

10

有効な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()は、データ型が有限 - 整数、SSN、UUIDなどである場合にXSS攻撃を防止するのに役立ちます。ただし、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="..."> 

to protect queries:ポイント、使用することをくどくどする

そして最後に。

更新

最後に、ではなく、少なくとも、OWASP XSS Cheat Sheet:そこにXSSを防ぐために、入力を処理するためのヒューリスティクスの最高のセット。

関連する問題