Содержание
Коротко
Быстрый Node.js-бэкенд легко увести в прод с «тихими» дырами: не в логике бизнеса, а в regex, зависимостях, слиянии объектов и конфиге. Обзор на Dev.to собирает семь типичных классов проблем — полезен как чеклист перед релизом.
Что произошло
Автор описывает сценарии, когда команды теряли данные из‑за мелочей: ReDoS в пользовательском вводе, вредоносный пакет в цепочке npm, prototype pollution через Object.assign/lodash.merge, секреты в .env без ротации, NoSQL injection в MongoDB-запросах.
Это не zero-day «из новостей», а накопление мелких ошибок в типичном Express/Fastify/Nest стеке.
Почему это важно
Node экосистема поощряет скорость: npm install, copy-paste middleware, деплой. Безопасность часто откладывают, пока не сработает сканер или инцидент.
Ключевые риски из материала:
| Угроза | Суть | Минимум защиты |
|---|---|---|
| ReDoS | «Злой» ввод ломает regex, event loop встаёт | Аудит regex, лимиты длины ввода, таймауты |
| Supply chain | Компрометированный пакет в node_modules |
npm audit, lockfile, npm ci, проверка maintainers |
| Prototype pollution | Подмена __proto__ через merge |
Безопасный merge, Object.create(null), JSON Schema |
| Секреты | Ключи в env без vault | Secret manager, ротация, не логировать env |
| NoSQL injection | Объект вместо строки в запросе | Валидация схемы, параметризация, allowlist полей |
На практике
- Перед продом — прогон
npm audit/ OSV / Dependabot и фикс критичных CVE в lockfile. - Входные данные — Zod/Valibot на границе API; не доверять
req.bodyв запросах к БД. - Merge — не мержить произвольные JSON от клиента в конфиг/профиль; для deep merge — проверенные библиотеки с защитой от pollution.
- Regex — избегать вложенных квантификаторов на пользовательских строках; при сомнении — библиотека вроде
safe-regexили отказ от regex. - CI — SAST + secret scanning (gitleaks, GitHub secret scan).
Для небольших проектов достаточно дисциплины; для enterprise — те же пункты, но формализованные в policy и review.
Итог
Статья — напоминание: безопасность Node — это не только HTTPS и helmet. ReDoS и pollution бьют так же больно, как SQL injection в других стеках. Имеет смысл пройтись по чеклисту раз в квартал или при смене major-зависимостей.