Безопасность по фреймворкам
Руководства по безопасности для каждого фреймворка — опасные значения по умолчанию, наиболее часто эксплуатируемые слабые места и шаги харденинга — для WordPress, Laravel, Next.js, Spring и других.
Поддерживаемые фреймворки
PHP
У WordPress крупнейшая доля, поэтому он статистически крупнейшая цель. Входы — не столько ядро, сколько уязвимости плагинов/тем, пропущенные обновления, слабые/переиспользуемые администраторы и открытые поверхности администрирования (wp-admin/xmlrpc/перечисление через REST). Защита: автоматизировать обновления ядра и плагинов, удалять неиспользуемые плагины/темы, надёжный пароль + 2FA для администраторов, ограничить доступ к админке и число попыток входа, обнаружение подмены плюс офлайн-резервные копии.
LaravelLaravel поставляется с довольно безопасными настройками по умолчанию, но большинство инцидентов приходит из эксплуатации. Большая тройка ловушек: (1) .env или файлы секретов достижимы по URL из публичного каталога, (2) APP_DEBUG=true в проде раскрывает переменные окружения и данные подключения на странице ошибки, (3) отсутствие авторизации (вход = аутентификация, но нет авторизации по владельцу / Mass Assignment перезаписывает непреднамеренные поля). Защита: секреты вне public с правами 600, отладка выключена + кеш конфигурации в проде, авторизация через Policy/Gate, объявление $fillable.
JavaScript / Node
Next.js поставляется с довольно безопасными значениями по умолчанию, но инциденты происходят на границе сервер/клиент. Большая тройка: (1) утечка переменных окружения (неверное использование NEXT_PUBLIC_ или передача серверных секретов клиенту), (2) отсутствие авторизации в Server Actions / Route Handlers (аутентифицирован, но нет проверки владельца) и (3) известные CVE зависимостей (включая RCE в ядре фреймворка — судите по работающей версии и быстро патчите). Защита: держите секреты на сервере, следите за границей, авторизуйте в каждом действии, машинно мониторьте CVE зависимостей.
ExpressExpress минималистичен — из коробки он почти не несёт функций безопасности, поэтому защиту добавляет разработчик. Главное: (1) заголовки безопасности (уровня helmet), (2) валидация и санитизация ввода, (3) авторизация по владельцу, а не только аутентификация, (4) ограничение частоты (перебор / DoS), (5) мониторинг CVE зависимостей (npm) и быстрое закрытие. Плюс защита от SSRF при исходящих запросах к URL и секреты в переменных окружения, вне кода. Свобода минимального фреймворка идёт вместе с ответственностью за защиту.