Действительный 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, но ее можно изменить, чтобы вместо нее обновить столбцы с помощью атаки.
Проверка электронной почты, по-видимому, предотвращает атаки, которые я смог найти .
Как обобщение, isValid()
помогает предотвратить атаки XSS, когда тип данных конечен - целые числа, SSN, UUID и т. Д. Однако есть подробный список документированных потенциальных атак против полей, чей тип данных По сути, это «строка». В этом случае isValid()
не поможет, скорее всего AntiSamy OWASP - это полезный инструмент для этой цели, который проходит через DOM и удаляет все, что не занесено в белый список.
Лучшее регулярное выражение для отлова атаки XSS (межсайтовый скриптинг) (в Java)? предоставляет много полезной информации по общей теме предотвращения XSS.
И, наконец, чтобы обозначить точку, используйте:
<cfqueryparam cfsqltype="..." value="...">
для защиты запросов .
Обновление
И последнее, но не менее важное: Шпаргал OWASP XSS : лучший набор эвристик для обработки входных данных для предотвращения XSS.