Ответ вслух Middle Безопасность бэкенда спрашивают часто обновлено

Как защитить Node.js API

Вопрос

Какие меры безопасности ты закладываешь в новый Node.js API?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Начинаю с границы: каждый входящий запрос валидирую схемой, zod или class-validator, и беру только разрешённые поля. Это закрывает и невалидные типы, и mass assignment, и NoSQL-инъекции.

Что должно прозвучать в ответе

  • Валидация всего входа схемой, белый список полей (против mass assignment)

  • Параметризованные запросы или ORM, никакой склейки SQL

  • Пароли: argon2id/scrypt/bcrypt; секреты в env или менеджере секретов, не в git

  • Rate limiting на вход и дорогие эндпоинты, общий счётчик в Redis

  • Заголовки безопасности (helmet), лимит тела запроса, без стеков в ответах

  • Зависимости: lock-файл, npm audit в CI, обновления

Что могут спросить следом

  • Как ты проверяешь права доступа к конкретному объекту?
  • Что будешь делать, если секрет утёк в git?
  • Как защититься от SSRF?

Разбор

Начинаю с границы: каждый входящий запрос валидирую схемой, zod или class-validator, и беру только разрешённые поля. Это закрывает и невалидные типы, и mass assignment, и NoSQL-инъекции. Ограничиваю размер тела.

К базе хожу только параметризованными запросами, через ORM или плейсхолдеры, сырой SQL без параметров запрещён на ревью. Пароли храню через argon2id или bcrypt. Секреты лежат в переменных окружения или менеджере секретов, в репозитории их нет.

На вход, восстановление пароля и отправку кодов ставлю rate limiting с общим счётчиком в Redis. Включаю helmet для заголовков безопасности, клиенту отдаю ошибки без стеков.

Кроме того, проверяю авторизацию на уровне объекта: не только «пользователь вошёл», но и «это его заказ». И слежу за зависимостями: lock-файл, npm audit в CI, регулярные обновления.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме