XSS уязвимость (атака) — англ. Сross-Site Sсriрting — межсайтовый скриптинг. Правда, XSS не соответствует этому термину, но аббревиатура CSS уже была занята более мирным делом, и слово Cross ассоциировали с буквой X.
Смысл уязвимостей этого вида в том, что уязвимый скрипт может выводить на странице GET-параметры, не проверяя их. В результате можно подобрать параметры скрипта так, чтобы при его вызове сформировалась страница с нужным злоумышленнику содержанием. Например, вставить в параметры HTML-код или код JavaScript, который и будет в результате выведен на странице.
Почему он называется межсайтовым (Cross-Site)? Да потому, что на сайте-жертве такой ссылки нет и быть не может — поэтому ссылку размещают на каком-нибудь другом сайте, а нужный результат перешедший по этой ссылке посетитель увидит на сайте-жертве. Разумеется, самым распространенным применением XSS тут же стало формирование ссылок на уязвимых сайтах.
Больше всего эксплуатировались такие уязвимости в скриптах поиска по сайту. Как правило, поисковая форма передает запрос методом GET — то есть, отправляет текст запроса в параметре URL. На странице результатов поиска обычно выводится текст запроса — «Результаты поиска по запросу …». А если ничего не нашлось, на странице результатов будет красоваться надпись «По запросу … ничего не найдено». Остается только привернуть такой параметр, чтобы вместо многоточия в этом сообщении появилась активная ссылка. Это очень просто сделать, если скрипт поиска не проверяет запрос на наличие HTML-тегов.
Устранить XSS-уязвимость тоже несложно — скрипт поиска должен убрать все теги из полученного в GET-параметре текста, прежде чем что-то искать по этому запросу.