Безопасность в Laravel: Как защитить свое приложение Часть 2


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, которая уже защищает нас от этого типа атак.

Оцените статью
Procodings.ru
Добавить комментарий