Данный вид атак направлен на веб-сайты, отображающие вводимые пользователями данные. Вместо попытки получения контроля над базой данных путем ввода вредоносного кода злоумышленник пытается атаковать код самого веб-сайта, внедряя в него вредоносные сегменты.
Многие сайты хранят имена всех посетителей в базе данных, чтобы иметь возможность отображать их при вводе соответствующих пользователей. Злоумышленник может создать подложную учетную запись, разместив при этом в поле имени вредоносный код. Подобные атаки обычно реализуются с помощью вредоносных скриптов на языке Javascript, которые затем загружают контент с другого веб-сайта. Предполагается, что в базе данных хранится имя пользователя, но на самом деле в данном случае это будет вредоносный код. Соответственно, если веб- сайт отображает имя пользователя в верхней части страницы, то этот код будет выполнен. Поскольку при наличии определенных условий такой код может делать практически все, что угодно, угроза становится вполне реальной; тем не менее, разработчики зачастую про нее забывают. В разное время жертвами XSS -атак стали многие популярные веб-сайты, в том числе MySpace, Facebook, Google Mail, ВКонтакте.
|
|
Рассмотрим следующий PHP -код:
$firstname = $_POST["firstname"];
echo "Your name: $firstname";
После ввода имени в веб-форме сайт отображает на странице соответствующее сообщение. Если указать в форме имя "John", то сообщение будет иметь следующий вид: "Your name: John".
Что произойдет, если вместо имени ввести следующую конструкцию:
"<script>alert ("You just got hacked!");</script>"?
К сожалению, XSS -атакам зачастую трудно что-либо противопоставить, поскольку для этого необходимо должным образом фильтровать вводимые и выводимые данные, а также все поля, которые могут меняться пользователями. Сюда относятся данные, получаемые из запросов GET и POST, а также запросы, возвращаемые из базы данных.