Одни и те же ошибки в защите сайтов — куда чаще, чем думаем
Смотрю периодически код разных проектов — и удивляюсь, как часто базовые вещи про безопасность забываются или делают на коленке. Вот пару примеров, которые встречал лично и которые знаю из профиля:
- Недооценка валидации пользовательских данных. Часто вообще ноль фильтрации, что потом выливается в проблемы с XSS и SQL-инъекциями. Разработчики либо пренебрегают, либо не понимают, зачем это надо.
- Хранение паролей не по стандарту — некоторые даже хэши не делают или берут устаревшие алгоритмы. Минус безопасности и плюс проблем при взломе.
- Отсутствие защиты от CSRF — представляете, насколько это просто реализовать, а всё равно многие обходят вниманием.
- Неиспользование современных заголовков безопасности (Content-Security-Policy, X-Frame-Options и т.д.) — мелочь, а иногда решает очень много.
- Логика доступа реализована через фронтенд, а не через бекенд — провал безопасности как на ладони.
Если проверять проект, сначала смотрю на эти базовые вещи — и видно, где был «конструктор» без понимания. Проверка занимает пять минут, если знаешь, что искать: пробежаться по формам, проверить, как обрабатываются данные на сервере и браузерные заголовки, посмотреть хранение паролей.
Решения простые — использовать проверенные библиотеки и фреймворки, не лезть руками писать свои фильтры, тестировать на самые банальные сценарии. Если изучать чётко чек-лист из пяти-десяти пунктов по безопасности и не пропускать его, количество уязвимостей резко падает.
Как у вас с этими моментами? Что чаще всего забывают ваши коллеги в плане безопасности? Может, есть какие-то лайфхаки для быстрого аудита?