Перейти к содержанию
Innovialabs

Чек-лист безопасности сайта перед запуском

Практика3 мин

Коротко

Перед запуском включите HTTPS и заголовки безопасности, закройте админку, удалите стандартные учётки и debug-режим, обновите всё, защитите формы и убедитесь, что бэкапы восстанавливаются, а ошибки доходят до вас.

Короткий ответ

Большинство взломов сайтов обходятся без изощрённых атак — используется то, что осталось открытым: пароль по умолчанию, забытый .env, устаревший плагин, страница отладки. Пройдите список ниже на production-сервере, а не на своём ноутбуке, за несколько дней до запуска.

HTTPS

  • Действующий сертификат покрывает все используемые домены и поддомены, включая www.
  • Все HTTP-запросы перенаправляются на HTTPS постоянным редиректом.
  • Автопродление сертификата настроено и проверено.
  • Нет смешанного контента: картинки, скрипты и шрифты грузятся по HTTPS.
  • Старые протоколы отключены, сервер или CDN работает на TLS 1.2 и 1.3.

Заголовки безопасности

Заголовки подсказывают браузеру, как защищать пользователей. Разумная отправная точка для nginx:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header X-Frame-Options "DENY" always;
add_header Content-Security-Policy "default-src 'self'; frame-ancestors 'none'" always;

Content-Security-Policy в этом примере строгая и, скорее всего, заблокирует аналитику, шрифты или виджеты — перечислите источники, которые вы реально используете. HSTS включайте, только когда уверены, что все поддомены работают по HTTPS.

Доступ к админке

  • Админка не висит по очевидному адресу, а лучше доступна только через VPN или белый список IP.
  • Двухфакторная аутентификация для каждого администратора.
  • У каждого сотрудника своя учётка, общего логина «admin» нет.
  • Попытки входа ограничены по частоте.
  • SSH работает по ключам, вход по паролю и прямой вход под root отключены.
  • Порты базы данных закрыты от интернета.

Стандартные учётки и тестовые данные

  • Пароли по умолчанию в CMS, базах данных, роутерах и панелях управления изменены.
  • Тестовые пользователи вроде test@test.com и демо-контент удалены.
  • API-ключи и пароли не лежат в репозитории, а хранятся в переменных окружения или менеджере секретов; ключи, которые использовались при разработке, перевыпущены.

Debug-режим и открытые файлы

  • Debug выключен: пользователь видит нейтральную страницу ошибки, а не stack trace.
  • Эти пути отдают 404 или 403: /.git, /.env, архивы бэкапов, phpinfo, дампы базы.
  • Листинг директорий отключён.
  • Source maps не раздаются публично, если вы не решили это сознательно.
  • Баннеры с версиями сервера и фреймворка по возможности скрыты.

Обновления и зависимости

  • CMS, плагины, темы, фреймворк и пакеты сервера на актуальных поддерживаемых версиях.
  • Неиспользуемые плагины и модули удалены, а не просто выключены.
  • Аудит зависимостей (npm audit, composer audit, pip-audit или аналог) не показывает известных критичных проблем.
  • Назначен ответственный за установку обновлений безопасности после запуска.

Защита форм

  • Серверная валидация каждого поля; проверки в браузере — только для удобства.
  • Запросы к базе используют параметры, а не склейку строк.
  • Пользовательский ввод экранируется при выводе.
  • CSRF-защита на формах, которые меняют данные.
  • Ограничение частоты и антиспам на формах обратной связи, входа, регистрации и сброса пароля.
  • Загрузка файлов: тип и размер проверяются на сервере, файлы хранятся вне веб-корня или в объектном хранилище и никогда не исполняются.

Бэкапы

  • Автоматические бэкапы базы данных и загруженных файлов.
  • Копии хранятся отдельно от основного сервера.
  • Тестовое восстановление проведено — бэкап, который никто не восстанавливал, это лишь надежда.

Логи и мониторинг

  • Логи доступа и приложения хранятся достаточно долго, чтобы расследовать инцидент.
  • В логах нет паролей, токенов и полных номеров карт.
  • Мониторинг доступности оповещает живого человека.
  • Ошибки приложения собираются в инструмент, который команда действительно смотрит.
  • Входы в админку и изменения прав логируются.

Частые вопросы

Да. Бесплатные сертификаты, например Let's Encrypt, дают такое же шифрование, как платные. Платные отличаются типом проверки, гарантией и поддержкой, а не качеством защиты трафика.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.