Пять дыр, которые мы находим почти в каждом сайте
За годы аудитов набор находок повторяется настолько стабильно, что мы собрали его в список. Ни одна из этих дыр не требует таланта атакующего, только невнимательности разработчика.
Первое: приватные файлы, доступные по прямой ссылке. Договор клиента лежит в /uploads/contract-4382.pdf, и «защита» состоит в том, что ссылку никто не угадает. Угадывают. Перебором, за вечер.
Второе: подробные ошибки наружу. Стектрейс с путями до файлов, версией фреймворка и куском SQL дарит атакующему готовую карту. Пользователю достаточно сообщения «что-то пошло не так», а детали остаются в логе.
Третье: формы без rate-limit. Форма логина, принимающая тысячу попыток в минуту, работает не как форма логина, а как тренажер для перебора паролей.
Четвертое: доверие к данным из браузера. Цена товара, приходящая из формы корзины, id пользователя из cookie без подписи, все это переписывается в один клик в devtools.
Пятое: админка на /admin с паролем из письма трехлетней давности. Смените. Прямо сейчас, мы подождем.
Каждый пункт закрывается за часы, если о нем знать. Именно поэтому security-ревью в наших проектах стоит в плане с первого дня, отдельной опцией мы его не продаем.