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

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);

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

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024