Заметка для тех, кто пользуется генерацией кода в Yii2
WEB
0
624
Yii2 является одним из популярных PHP-фреймворков, название которого сложно прочитать. Правильное использование фреймворков заметно сокращает время разработки, а также закрывает большинство вопросов с безопасностью. Но это, конечно, не означает абсолютную безопасность приложений на Yii2, так как в любой системе есть присутствие человеческого фактора. Эта краткая заметка показывает реальный кейс, когда кодогенерация в Yii2 или в любом другом фреймворке может подставить с безопасностью.
Итак, представим, что у нас есть таблица users:
После генерации CRUD в Gii для таблицы users, у нас появляется новый файл UsersSearch.php, который отвечает за поиск данных по нашей таблице. Из всего файла нам интересен данный участок кода:
Бездушному скрипту автогенерации, конечно же, все равно, необходим ли поиск людей по паролю, поэтому тот честно генерирует запрос для поля password. Зачастую, разработчики убирают вывод поля password из всех вьюшек и т.д., но забывают удалить из сгенерированного класса для поиска. В результате чего, можно провернуть следующее:
Добавив к запросу поиска параметр UsersSearch[password], мы можем посимвольно перебирать пароль пользователя. Хотя пароли хэшируются необратимой функцией, при желании и хороших мощностях, всегда можно сбрутить хэш несложного пароля. Даже если это не пароль, это может быть какой-то конфиденциальной информации типа номера телефона, места жительства и т.д.
Для опытных разработчиков Америку не открыли, но рекомендуем проверить свои проекты на существование такого участка кода. Информация может быть актуальна для любых фреймворков, где используется подобная генерация кода.