Что такое межсайтовая сценарная атака?

Межсайтовая сценарная атака заключается во внедрении в выдаваемую веб-страницу вредоносного кода которая будет скрытно выполнена на компьютере пользователя на этой страницы. Специфика межсайтовой сценарной атаки заключается в том что с помощью внедренного участка кода можно получить доступ к сессии пользователя либо авторизованных данных пользователя и последующее управление уже в роли данного пользователя.

Пример сценарной атаки

Допустим нам необходимо дать возможность комментирования к примеру блога или статьи, не беспокоясь о том что содержащийся в комментарии код JS или Html создаст проблемы.

Решение

Немного аналитики. Мы не можем ограничить ввод данных пользователю потому что с помощью этой формы он должен свободно выражать свои мысли по поводу статьи нашего блога. Но мы можем убрать возможность вставки участков с HTML + JS ведь по сути никому кроме злоумышленников не понадобиться вставлять в комментарий участки кода.

Мы могли бы создать проверку на наличии данных участков и просто не допускать их на публикацию. Но задумайтесь сколько условий пришлось бы нам использовать. Уйму..

Но на помощь нам приходить стандартный метод PHP . С помощью функции htmlentities() мы сможем просто экранизировать участки вредоносной вставки. Более подробно о данной функции можно найти в документации PHP (я думаю ссылку давать нет необходимости)

Итог

В стандартных методах PHP существует пару функции с помощью которых можно экранизировать HTML. Простейшая это htmlspecialchars() – экранизирует четыре символа (< > “ и &) . Но именно функция htmlentities ( ) преобразует любые символы которые имеют эквивалент сущности HTML.

Имеется один нюанс при преобразовании данная функция орудует набором символов UTF-8 , по этому мы получим вместо вставки вредоносного кода участок из обычных символов.

Таким образом мы сможем ограничить внедрение вредоносных участков кода в комментарии нашего блога. Но не стоить забывать о том что это лишь одна из возможных атак разновидности «внедрение кода». Существует еще DDOS-атаки, мы постарались объяснить в прошлой статье как проверить на уязвимость серверную сайта от подобных атак.