Распространенные уязвимости:
- Инъекционные атаки: SQL, NoSQL, внедрение команд.
- Межсайтовый скриптинг (XSS): внедрение скриптов в ответы.
- Подделка межсайтовых запросов (CSRF): непреднамеренные действия с помощью файлов cookie.
- Небезопасная десериализация: выполнение ненадежных объектов.
- Небезопасные зависимости: уязвимые пакеты npm.
- Нарушенная аутентификация: плохое управление сеансами/токенами.
- Неправильная проверка ввода: приводит к сбоям или обходам.
Стратегии смягчения последствий:
- Проверьте и очистите все входные данные.
- Используйте ORM или построители запросов, чтобы предотвратить внедрение.
- Экранируйте вывод HTML, чтобы предотвратить XSS.
- Внедрите токены CSRF для операций изменения состояния.
- Регулярно проверяйте зависимости, используя
npm audit
или
snyk
.
- Используйте безопасную аутентификацию с правильным хешированием (например, bcrypt).
- Установите соответствующие заголовки HTTP (
helmet
,
CSP
,
X-Content-Type-Options
).
- Обеспечьте безопасность переменных и секретов среды.
Итог
Ключевой вывод для интервью: каковы распространенные уязвимости в приложениях Node.js и как их можно устранить?