Рубріки: Решения

5 лучших npm-пакетов для защиты серверной части Node.js: DoS-атаки, XSS-уязвимости и MIME-сниффинг

Богдан Мирченко

Разработчик Нитин Ранганатх поделился пятью лучшими, по его мнению, npm-пакетами для защиты от распространенных атак. С их помощью можно за несколько простых действий сделать приложение на Node.js + Express.js безопаснее.  Все, что нужно сделать, это просто установить их и использовать в качестве промежуточного программного обеспечения (ПО). 

Helmet

Что делает: представляет собой набор функций промежуточной обработки (middleware), устанавливающий определенные HTTP-заголовки для обеспечения безопасности. 

От чего защищает: нейтрализует атаки межсайтового скриптинга, инъекционные, MIME сниффинга и целевые атаки на Express-серверы путем отключения заголовка X-Powerd-By. 

Как использовать:

npm install helmet
const app = require('express')();
const helmet = require('helmet');

// Using helmet middleware
app.use(helmet());

app.listen(1337);

XSS-Clean

Что делает: очищает пользовательский ввод, поступающий из тела запроса POST (req.body), GET-запроса (req.query) и параметров URL (req.params).

От чего защищает: от межсайтового скриптинга (XSS-уязвимостей). 

Как использовать: 

npm install xss-clean
const app = require('express')();
const xssClean = require('xss-clean');

// Protect against XSS attacks, should come before any routes
app.use(xssClean());

app.listen(1337);

HPP (HTTP Parameter Pollution)

Что делает: откладывает параметры массива в req.query или в req.body и просто выбирает последнее значение параметра, чтобы избежать HPP-атак.

От чего защищает: препятствует обходу проверок ввода и DoS-атакам с помощью ошибки Uncaught TypeError в асинхронном коде, приводящей к сбою сервера. 

Как использовать: 

npm install hpp
const app = require('express')();
const hpp = require('hpp');

// Protect against HPP, should come before any routes
app.use(hpp());

app.listen(1337);

Express Mongo Sanitize

Что делает: ищет любые ключи в объектах, которые начинаются со знака $ или содержат . из req.bodyreq.query или req.params, после чего удаляет их или заменяет запрещенные символы разрешенными. 

От чего защищает: препятствует внедрение в MongoDB вредоносного оператора. Например, злоумышленники могут отправить объект, содержащий оператор $ или включающий ., что способно изменить контекст операции с базой данных.

Как использовать: 

npm install express-mongo-sanitize
const app = require('express')();
const mongoSanitize = require('express-mongo-sanitize');

// Remove all keys containing prohibited characters
app.use(mongoSanitize());

app.listen(1337);

Express Rate Limit

Что делает: применяется для ограничения IP-адресов от повторных запросов к эндпоинтам API. Примером может служить ограничение скорости конечной точки, которая отвечает за отправку электронных писем для сброса пароля, что может повлечь за собой дополнительные расходы.

От чего защищает: от brute-force-атак (перебор всех возможных вариантов ключа), DoS- и DDos-атак. 

Как использовать: 

npm install express-rate-limit
const app = require('express')();
const rateLimit = require('express-rate-limit');

// Restrict all routes to only 100 requests per IP address every 1o minutes
const limiter = rateLimit({
    windowMs: 10 * 60 * 1000,    // 10 minutes
    max: 100                     // 100 requests per IP
});
app.use(limiter);

app.listen(1337);

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023