- PVSM.RU - https://www.pvsm.ru -

Проверка на XSS уязвимости, сайта на основе Yii2

В yii по умолчанию используется шаблонизатор для view чистый php. К сожалению, это может привести к ошибкам экранирования вывода. Разработчик выводимый контент должен экранировать, используя Html::encode(), либо аналог. Обычно, для поиска подобных ошибок, пентестер забивает во все возможные поля форм код вида:

<script>alert(document.cookie);</script>

Потом проходиться по всему проекту и смотрит что упало. Но иногда бывает, что форма выводиться не полностью. Если же атрибуты будут посланы явно отдельным запросом Post, то будут загружены в модель. Либо сейчас заполнить атрибут через форму пользователь не может, и все хорошо, а через месяц форма меняться, параметр становиться доступен для редактирования, и где-то в совсем другой части проекта проявляется XSS.

Предлагаю простой способ облегчить жизнь пентестера. Автоматически добавлять в текстовые поля всех моделей ActiveRecord вышеуказанный javascript код.

Пример автоматического добавления c gist: gist.github.com/analitic1983/2c0efa3b70694721a61782c7e820a20f [1]

Ваша логика определения тестовых полей может быть более сложной, но и представленный код отработал свою функцию на нашем проекте.

Тем кто использует функциональные автотесты, можно реализовать возможность проверки исходного кода на странице, если подстрока есть в исходном виде (не экранирована), выдавать ошибку.

Конечно, это не является 100% защитой от xss, но снижает вероятность уязвимости.

Автор: Наташа

Источник [2]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/297105

Ссылки в тексте:

[1] gist.github.com/analitic1983/2c0efa3b70694721a61782c7e820a20f: https://gist.github.com/analitic1983/2c0efa3b70694721a61782c7e820a20f

[2] Источник: http://habrahabr.ru/sandbox/124545/