Проверка безопасности сайта: как пара часов превратилась в 3 недели
Проверку безопасности сайта я хотел сделать за пару часов: простой мониторинг доступности и алерт админу. Вышло 3 недели и сервис на 70+ пунктов. Он смотрит скорость загрузки, SSL и DNS, JS- и PHP-ошибки, уязвимости фронтовых библиотек, попадание в РКН и спам-листы, юридические риски.
У нас в Alto растёт количество клиентов на техподдержке. Это когда помимо работы программиста, еще нужно заранее знать о том, что есть риски безопасности. Или сервис отвалился и надо прислать алерт админу. Чтобы проблемы клиента стали нашими.
Я подумал, что не помешает написать свою проверку доступности. Чтобы просто видеть алерт. Пару часов работы, с ИИ итого меньше. Казалось мне.
Дальше всё как в тумане. 3 недели бессонных ночей. Перелопатил десятки чек-листов. Копнул информационную безопасность. Юридические аспекты. Англицизмы в конце концов.
Появился сервис проверки всего-всего на сайте, что может оказаться проблемой.
Что входит в проверку безопасности сайта
— Скорость загрузки
— Визуальный регресс (делает скриншоты и сравнивает с прошлым периодом) + изменения в тексте
— SSL, Домен, DNS-записи
— JS-ошибки, PHP-ошибки на странице
— Сканирование путей, которые могут влиять на взлом (более 2700) + открытые порты + утечки ключей + поиск поддоменов и портов
— Известные уязвимости фронтовых библиотек
— Попадение в РКН, спам-листы, базу вирусов
— Юридические риски: англицизмы, перс данные, отсутствие чекбоксов, трансграничная передача данных
— Тест работоспособности корзины и поиска, если вы еком.
— Доступность сайта для людей с ограниченными возможностями
И так 70+ пунктов.
Проверка сайтов топ-100 екома на уязвимости
Ради научного интереса, проверил топ-100 екома. У 3х сайтов нашёл проблемы с безопасностью, про это еще отдельно напишу.
Получился отличный бонус для наших клиентов, у кого не настроен отдельный мониторинг внутри.
Я бы рад из этого сделать отдельный SaaS из этого, но рынка там не нашел, хоть и смотрел с пристрастием.
А пока давайте так, вы присылаете сайт в комменты или лс @altoivan, а я вам в течение дня отчёт — что с сайтом и чем вы рискуете.
Какие бывают проверки сайта
Одна проверка сайта не заменяет другую. Мониторинг доступности отвечает на вопрос «работает ли сайт прямо сейчас», аудит безопасности — «можно ли его взломать», юридическая проверка — «не придёт ли штраф». Мне хотелось видеть всё это в одном отчёте, поэтому сервис разросся до 70 с лишним пунктов.
Ниже — как я делю проверки по частоте. Одни имеет смысл гонять каждую минуту, другие достаточно запускать раз в месяц.
| Проверка | Как часто | Что ловит |
|---|---|---|
| Доступность и код ответа | Каждые 1–5 минут | Падение сайта, ошибки 5xx |
| SSL-сертификат и домен | Раз в сутки | Истекающий сертификат, продление домена |
| Скорость загрузки | Раз в сутки | Деградацию после релиза |
| Визуальный регресс | После каждого релиза | Съехавшую вёрстку, пропавшие блоки |
| Уязвимости и открытые порты | Раз в неделю | Забытые админки, старые библиотеки |
| Юридические риски | Раз в месяц | Нарушения 152-ФЗ, англицизмы |
Технические уязвимости, которые находятся чаще всего
Большинство взломов начинается не со сложной атаки, а с забытого файла, поэтому сканер путей перебирает больше 2700 адресов: резервные копии вроде backup.zip, открытые папки .git, файлы .env с паролями от базы, панели phpMyAdmin.
Вторая группа — устаревшие библиотеки. Старая версия jQuery или плагина для слайдера тянет за собой известные уязвимости с номерами CVE, и эксплойты к ним лежат в открытом доступе.
Третья — утечки ключей. API-ключ платёжной системы или карт в коде фронтенда виден любому, кто откроет инструменты разработчика.
Проверка сайта на уязвимости: что смотреть самому
- Отдаёт ли сайт по адресу /.git/config содержимое, а не ошибку 404.
- Не открыты ли наружу порты базы данных: 3306 у MySQL, 5432 у PostgreSQL, 6379 у Redis.
- Есть ли заголовки безопасности: Content-Security-Policy, Strict-Transport-Security, X-Frame-Options.
- Какие поддомены светятся в публичных логах сертификатов, например на crt.sh. Там часто находятся забытые тестовые стенды.
Юридическая проверка: персональные данные и русский язык
Юридическая часть оказалась для меня самой неожиданной. Формы на сайте собирают имя, телефон и почту, а значит, владелец сайта становится оператором персональных данных по 152-ФЗ, и ему нужны политика обработки, согласие отдельным чекбоксом и уведомление в Роскомнадзор.
С 2025 года штрафы за нарушения в этой сфере выросли в разы, а за утечки ввели оборотные штрафы. Отдельный риск — трансграничная передача: если на сайте стоят иностранные счётчики или формы, данные уходят за рубеж, и об этом тоже нужно уведомлять.
Англицизмы — свежая тема. Поправки к закону о государственном языке требуют дублировать иностранные слова в публичной информации для потребителей, поэтому проверка ищет такие слова в меню, кнопках, заголовках и других заметных местах сайта.
Мониторинг сайта: как настроить алерты, чтобы их читали
Алерт, на который никто не реагирует, хуже, чем отсутствие алерта. Он создаёт ощущение контроля.
Я разделяю события по срочности. Сайт недоступен или не работает корзина — сообщение в Telegram дежурному сразу. Сертификат истекает через 14 дней — письмо. Новый англицизм на странице — строка в еженедельном отчёте.
Ещё одна деталь — повторная проверка перед отправкой алерта, ведь одна неудачная попытка из другого региона может оказаться сбоем сети, поэтому тревогу стоит поднимать только после 2–3 неудач подряд.
Проверка сайта на ошибки после релиза
Самые неприятные ошибки появляются не от атак, а от собственных обновлений. Визуальный регресс сравнивает скриншоты страниц до и после релиза и подсвечивает разницу, а проверка JS-ошибок ловит сломанные скрипты, которые в браузере разработчика почему-то работали.
Для интернет-магазина я отдельно проверяю сценарий покупки — поиск товара, добавление в корзину, переход к оформлению, — потому что если этот путь сломан, остальные 69 пунктов уже не так важны.
Почему я не стал делать из сервиса SaaS
Рынок мониторинга сайтов плотный. Есть узкие сервисы под каждую задачу: UptimeRobot и Uptrends для доступности, Google PageSpeed Insights и Lighthouse для скорости, сканеры вроде OWASP ZAP для безопасности.
Комбинированная проверка нужна тем, у кого нет своего администратора и разработчика на связи, но как раз такие владельцы сайтов редко платят за мониторинг заранее и приходят, когда уже что-то случилось. Поэтому я оставил сервис бонусом для клиентов на поддержке, а не отдельным продуктом.
Проверка безопасности на крупных сайтах
Проверка топ-100 интернет-магазинов показала, что проблемы бывают даже у крупных игроков: я нашёл уязвимости у трёх сайтов, а значит, своя команда разработки ещё не гарантирует, что кто-то регулярно смотрит на сайт глазами злоумышленника.
Такую проверку стоит повторять после каждого крупного релиза и смены подрядчика.
Вопросы и ответы
Что входит в мониторинг сайта?
У меня это 70+ пунктов: скорость загрузки, визуальный регресс, SSL, домен и DNS, JS- и PHP-ошибки, сканирование путей и портов, уязвимости библиотек, РКН и спам-листы, юридические риски и доступность.
Как проверить сайт на уязвимости?
Сервис сканирует больше 2700 путей, которые могут влиять на взлом, открытые порты, утечки ключей, поддомены и известные уязвимости фронтовых библиотек.
Какие юридические риски ищет проверка сайта на ошибки?
Англицизмы, персональные данные, отсутствие чекбоксов и трансграничную передачу данных.