IsValid () защищает от XSS? - PullRequest
       14

IsValid () защищает от XSS?

9 голосов
/ 29 декабря 2010

Использует ли IsValid () для проверки адреса электронной почты или формата URL защиту от XSS? Это отрицает XSS, когда другие форматы определены?

1 Ответ

10 голосов
/ 29 декабря 2010

Действительный 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.

...