Разработчик Нитин Ранганатх поделился пятью лучшими, по его мнению, npm-пакетами для защиты от распространенных атак. С их помощью можно за несколько простых действий сделать приложение на Node.js + Express.js безопаснее. Все, что нужно сделать, это просто установить их и использовать в качестве промежуточного программного обеспечения (ПО).
Что делает: представляет собой набор функций промежуточной обработки (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);
Что делает: очищает пользовательский ввод, поступающий из тела запроса 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);
Что делает: откладывает параметры массива в 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);
Что делает: ищет любые ключи в объектах, которые начинаются со знака $
или содержат .
из req.body
, req.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);
Что делает: применяется для ограничения 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), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…