XSS-атака
Эту атаку можно разделить на две части. Первая ограничивает специальные теги на сервере и не возвращает специальные теги в представлениях.
Ограничение специальных тегов на сервере
Вы можете использовать различные подходы. Встроенные методы PHP, такие как strip_tags, защищают только от тегов HTML и PHP. Вы даже можете использовать regex или использовать родной метод PHP htmlentities() или filter_var, хотя это не защищает полностью от всех возможных тегов. В этом случае я рекомендую использовать специальный пакет для решения этой проблемы, например
HTML Purifier.
Не возвращает специальные теги в представлениях
Если вы работаете с шаблонизатором Blade, вам следует обратить внимание на то, как вы печатаете данные в своем шаблоне:
<p>{{ $user->name }}</p>
Синтаксис двойных усов защитит вас от XSS-атак, автоматически экранируя теги за вас.
<p>{!! $user->name !!}</p>
С другой стороны, этот синтаксис опасен. Если вы не доверяете данным, которые могут прийти, не используйте его, потому что синтаксис bang-bang может интерпретировать PHP.
Использование другого шаблонизатора PHP
Laravel также предоставляет метод экранирования, который мы используем на любом другом шаблонизаторе, например Twig:
{{ e($user->name) }}
Использование Javascript Framework
Любой современный Javascript-фреймворк автоматически защищает нас от внедрения скрипта. VueJS, например, имеет директиву v-html, которая уже защищает нас от этого типа атак.