Уязвимость Symfony2 для атак XSS

Я использую Symfony2 ведьму Sencha Ext JS в качестве внешнего интерфейса.

Я обнаружил, что мои формы уязвимы для атак XSS.
Я знаю, что у Symfony2 есть механизмы, которые защищают наши данные от этих атак, однако эти механизмы в основном используют шаблоны для этого, которые я не использую.

Я собираю много данных из передних полей, которые передаются в бэкэнд. Я хочу решить эту проблему с наименьшими усилиями.

Моя цель — защитить свое приложение до того, как данные попадут в базу данных.
И есть 2 варианта, которые у меня на уме.

  • Во-первых, это добавить функцию strip_tag на слушатели событий жизненного цикла, что прослушать данные preFlush.

  • Во-вторых, добавить strip_tags на уровень сущности на выбранных уязвимых полях.

Оба варианта кажутся мне недостаточными из-за количества кода.

Может быть, есть хорошая идея добавить код в интерфейс Sencha?
Я не уверен, что делать.

Спасибо за советы!

4

Решение

Если вы не используете шаблонизатор (который я настоятельно рекомендую для предотвращения атак XSS), вам необходимо экранировать все пользовательские данные используя это:

htmlspecialchars($string, ENT_QUOTES);

Ты можешь добавить еще один уровень безопасности осуществляя Политика безопасности контента И его данное время Аргумент — это случайно сгенерированная длинная строка, которую нужно добавить к каждому тегу скрипта следующим образом:

<script nonce="myRandomString"></script>

Затем просто установите новый заголовок CSP в PHP:

header('Content-Security-Policy', 'script-src 'nonce-myRandomString' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:; object-src 'none');

Это предотвратит запуск стороннего скрипта в современных браузерах (а именно, в более новых версиях Chrome; но CSP 3 будет реализован в других в ближайшее время, надеюсь). Так что будьте осторожны, это не 100%, а просто сеть безопасности.

Осторожно, что данное время Строка ДОЛЖНА быть разной для каждого запроса.
Вы можете достичь этого с помощью слушателя Symfony. Я написал подробный учебник по реализации CSP Symfony.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]