Вопрос проверяет понимание основных практик защиты Node.js-сервисов от типовых атак и утечек данных, что критично для production-приложений.
Node.js-сервисы часто работают с пользовательскими данными и внешними API, поэтому безопасность — это не одна фича, а набор практик на разных уровнях приложения. Основные угрозы: инъекции, XSS, CSRF, брутфорс, утечка секретов и уязвимые зависимости.
const express = require('express');
const helmet = require('helmet');
const rateLimit = require('express-rate-limit');
const { body, validationResult } = require('express-validator');
const app = express();
app.use(helmet());
app.use(express.json({ limit: '10kb' }));
app.use(rateLimit({ windowMs: 15 * 60 * 1000, max: 100 }));
app.post('/login',
body('email').isEmail().normalizeEmail(),
body('password').isLength({ min: 8 }),
(req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) return res.status(400).json({ errors: errors.array() });
// дальнейшая логика аутентификации
}
);
npm audit и обновляйте зависимости.--production и не отдавайте stack trace клиенту.Итог: безопасность Node.js-сервиса — это комбинация валидации, правильной аутентификации, защиты заголовков и гигиены зависимостей; применять эти практики стоит с самого начала проекта, а не после первого инцидента.