1Почему о дырах узнают последними
Снаружи сайт с проблемами безопасности неотличим от здорового: страницы открываются, формы работают, заказы приходят. Уязвимости не мешают бизнесу — до момента, пока их не найдёт кто-то посторонний. А ищут постоянно: значительная часть трафика любого публичного сайта — автоматические сканеры, которые круглосуточно перебирают домены и известные слабые места. Им не важно, большая у вас компания или маленькая: находка монетизируется одинаково.
Из этого следует практичный вывод: вопрос не «заинтересует ли кого-то наш сайт», а «кто первым посмотрит на него внимательно — мы или чужой сканер». Аудит безопасности — это тот же взгляд снаружи, только по вашей воле и с отчётом вам, а не в чужую копилку.
2Пассивный уровень: что видно без «вторжения»
Первый слой аудита не требует никаких агрессивных действий — проверяется то, что сайт сам сообщает каждому браузеру. Уже на этом уровне у большинства сайтов набирается список замечаний:
- TLS-сертификат и шифрование: не истекает ли сертификат, не включены ли устаревшие версии протокола, работает ли принудительный редирект с http на https.
- Security-заголовки: HSTS, Content-Security-Policy, X-Frame-Options и другие — они защищают посетителей от перехвата, встраивания сайта в чужие фреймы и внедрения скриптов.
- Флаги cookie: сессионные cookie без HttpOnly и Secure проще украсть через уязвимость в скриптах — а это готовый угон личного кабинета.
- CORS-политика: слишком щедрые правила позволяют чужим сайтам делать запросы к вашему API от имени посетителя.
- DNS-записи почты: SPF, DKIM и DMARC — без них домен можно подделывать в письмах, а ваши собственные рассылки уходят в спам.
3Утечки: забытые файлы, которые отдают всё
Отдельный класс находок — файлы, которых в публичном доступе быть не должно. Классика жанра: каталог .git в корне сайта, из которого выкачивается вся история кода вместе с когда-либо закоммиченными паролями; файл .env с ключами от базы и платёжных систем; бэкапы вида backup.sql или dump.zip, оставленные «на минутку» прямо в корне; открытые панели статистики и администрирования.
Такие вещи проверяются точечными запросами по известным путям — и именно их первым делом перебирают чужие сканеры. По нашему опыту аудитов, утечки конфигурации встречаются даже у аккуратных команд: файл положили при отладке и забыли, а веб-сервер после переезда перестал его блокировать. Находка этого класса — почти всегда критическая: она отдаёт не «вектор атаки», а сразу ключи.
4Активный уровень: скан по базе известных уязвимостей
Второй слой — активное сканирование: специализированный сканер проверяет сайт по базе шаблонов известных уязвимостей (CVE) — дыр в конкретных версиях CMS, плагинов, панелей и библиотек, для которых уже опубликованы способы эксплуатации. Это отвечает на вопрос «есть ли на нашем стеке дыры, о которых знает весь интернет».
Важное отличие от пассивного уровня: активный скан — это уже целенаправленные проверки, поэтому проводится он только по согласию владельца и после подтверждения, что домен действительно ваш. Серьёзный подрядчик всегда попросит подтвердить владение — например, DNS-записью. Если «аудитор» готов сканировать любой чужой сайт по заявке, это повод насторожиться, а не обрадоваться.
5Что делать с результатами
Сырой отчёт сканера — это десятки пунктов, и без приоритизации он парализует: непонятно, что чинить первым. Рабочий формат — триаж: каждая находка получает степень критичности и понятное объяснение, чем грозит именно вам. Сначала закрываются критичные и высокие (утечки, известные CVE, проблемы с сессиями), затем средние (заголовки, cookie, почтовые записи), косметика — по остаточному принципу.
После исправлений обязателен повторный скан: он подтверждает, что дыры действительно закрыты, и фиксирует новую «точку отсчёта». А дальше начинается самое недооценённое — регулярный мониторинг, потому что новые уязвимости публикуются каждый день и разовая проверка устаревает быстрее, чем кажется. Почему это так, мы разобрали в отдельной статье про мониторинг безопасности.