div.main {margin-left: 20pt; margin-right: 20pt} А. Шкондин. artvs@clubpro.spb.ru
Cross-site scripting
Как ни странно это звучит, но к написанию данной статьи
меня подвиг обыкновенный спам. В мой почтовый ящик стали с надоедливой
регулярностью сваливаться списки вакансий от одного рекрутёрского
агентства. Пришлось посетить их сайт, чтобы поискать заветную кнопочку
unsubscribe. К моему великому сожалению таковой не оказалось. Зато я
обнаружил, что хотя сайт и носит гордое название "мир профессионалов",
разрабатывали его отнюдь не профессионалы, ибо о проблеме cross-site
scripting'a они ничего не знают.
В чем же заключается проблема? А заключается она в
наивности вебмастера, который не фильтрует сообщения, вводимые посетителем
в поля форм. А именно, пропускает следующие символы: < > " ' % ;
& + -
Чем это грозит? Самое безобидное, что можно придумать –
это JavaScript, который при просмотре сообщения будет открывать
произвольное окно. При просмотре моего резюме на сайте "мир
профессионалов" открывается как раз эта статья. Чтобы задумались :).
Из более неприятных действий могу указать, например, на
возможность загрузки более сложного скрипта с удалённого сервера и
прочтения содержимого cookies, что может скомпрометировать пароли и логины
не только посетителей, но и администраторов.
Обратите внимание, что cross-site scripting абсолютно
безразличен к тому, на каком языке написан обработчик формы: будь то CGI,
asp, jsp, servlet, php, perl или какая иная технология, ваш посетитель
может пострадать, для этого достаточно чтобы его браузер поддерживал
Jscript, и эта поддержка была не отключена.
Более подробную информацию о возможных неприятных
последствиях cross-site scripting’а читайте в рекомендациях Computer
Emergency Response Team (CERT) по адресу http://www.cert.org/advisories/CA-2000-02.html Техническую
информацию о способах фильтрации текста полей форм на разных языках
программирования смотрите на том же сайте: http://www.cert.org/tech_tips/malicious_code_mitigation.html/
|