Рекомендуемые библиотеки промежуточного программного обеспечения Express
Express — самый популярный фреймворк для создания веб-приложений NodeJS. Он также известен как минималистская непредвзятаяинфраструктура, которая сильно зависит от библиотек промежуточного программного обеспечения.
Следовательно, Express предоставляет множество встроенных и сторонних библиотек для достижения основных функций.
В этой статье мы обсудим пять лучших библиотек промежуточного программного обеспечения, предпочтительных для любого веб-приложения Express.
1. Шлем — повышение безопасности HTTP-заголовков
Helmet помогает защитить ваши приложения Express, устанавливая различные заголовки HTTP.
Это быстрый и простой способ создать дополнительный уровень безопасности, переключившись с стандартных заголовков Express на более стандартные.
Особенности шлема
- Промежуточное ПО в стиле Connect.
- Он защищает ваше приложение Node.js от распространенных уязвимостей безопасности, таких как кликджекинг, реализация строгого HTTP и параметры загрузки для уязвимых браузеров, таких как IE8.
- Указывает браузерам использовать HTTPS вместо небезопасного HTTP.
- Кроме того, он позволяет веб-приложениям изолировать свое происхождение с помощью заголовка
Origin-Agent-Cluster
. - Имеет некоторые параметры конфигурации для конкретного браузера (
helmet.ieNoOpen()
для Internet Explorer 8).
Helmet имеет более 1 миллиона загрузок NPM в неделю и 8,6 тыс. рейтингов GitHub.
Монтаж
Вы можете установить Helmet.js для своего приложения Express.js с помощью следующей команды.
npm install helmet --save
Затем включите его в свое приложение следующим образом.
var express =require('express'); var app =express(); var helmet =require('helmet'); app.use(helmet());
Использование шлема
Функция Helmet верхнего уровня включает в себя 15 промежуточных программ меньшего размера. Он включает 11 из них по умолчанию.
Это может быть одной из причин, по которой использование Helmet рекомендуется в рекомендациях по безопасности Express.js.
Давайте рассмотрим два из этих популярных вариантов конфигурации, которые предлагает Helmet.
contentSecurityPolicy
— установите Content-Security-Policy с помощьюhelmet.contentSecurityPolicy
(параметры), чтобы предотвратить атаки с использованием межсайтовых сценариев.
Вот пример используемого модуля.
app.use( helmet.contentSecurityPolicy({ useDefaults: true, directives: { "script-src": ["'self'", "codeacademy.com"], "style-src": null, }, }) );
expectCt(options)
— устранять ошибки при выдаче SSL-сертификатов. Вы можете выбрать один из трех параметров для использования.
maxAge
— определяет количество разделов для ожидаемой прозрачности сертификата.enforce
— если true, будущие соединения, нарушающие политику прозрачности сертификата, должны быть отклонены пользовательским агентом. По умолчанию установлено значение false.reportUri
— Если что-то пойдет не так, он отправит отчет на указанный URL-адрес.
Ниже приведен пример использования expectCt(options)
.
app.use( helmet.expectCt({ maxAge: 96400, enforce: true, reportUri: “https://securecoding.com/report", }) );
2. Cookie-parser — анализировать файлы cookie
Cookie-parser — это промежуточное ПО, которое передает файлы cookie вместе с запросами клиентов.
Cookie-parser использует свойство req.cookies
для доступа к данным Cookie. После синтаксического анализа объект req.cookies
содержит файлы cookie, отправленные по запросу в формате JSON.
Он способен анализировать как неподписанные, так и подписанные файлы cookie.
Cookie-parser имеет более 407 000 загрузок NPM в неделю и 2 000 рейтингов GitHub.
Возможности Cookie-парсера
- Функция
decode
предназначена для декодирования значения файла cookie. - Управление разделением и кодированием файлов cookie.
- Можно включить поддержку подписанных файлов cookie, передав строку
secret
. - поддерживает специальные файлы cookie JSON с
JSON.parse
.
Монтаж
Используйте следующую команду для установки cookie-parser.
npm install --save cookie-parser
Использование Cookie-парсера
После установки вы должны включить его в наш файл index.js
, чтобы использовать его.
var cookieParser = require('cookie-parser'); app.use(cookieParser());
Давайте создадим новый маршрут в вашем приложении Express, чтобы установить новый файл cookie.
var express = require('express'); var app = express(); app.get('/', function(req, res){ res.cookie('name', 'express').send('cookie set'); }); app.listen(3000);
Вы можете использовать следующую команду для проверки значений файлов cookie на стороне клиента.
console.log(document.cookie);
Чтобы просмотреть файлы cookie с вашего сервера, добавьте следующий код к маршруту в консоли сервера.
console.log('Cookies: ', req.cookies);
В результате при следующем запросе этого маршрута вы получите следующий ответ.
Cookies: { name: 'express' }
3. Паспорт — доступ к широкому спектру механизмов аутентификации
Passport — это простое промежуточное ПО для ненадежной аутентификации для Node.js.
Он состоит из полного набора механизмов аутентификации, известных как стратегии. Эти стратегии поддерживают аутентификацию с использованием имени пользователя и пароля или Facebook, Twitter и других. Passport позволяет разработчикам принимать решения на уровне приложений и выбирать наилучшую стратегию, максимально повышая ее гибкость.
Особенности паспорта
- 500+ стратегий аутентификации.
- Чрезвычайно легко интегрируется в приложение.
- Единый вход с OpenID и OAuth.
- Поддерживает постоянные сеансы.
- Легкая кодовая база.
- Позвольте вам реализовать индивидуальные стратегии.
Passport имеет более 1 миллиона загрузок NPM в неделю и 19,5 тысяч оценок GitHub.
Монтаж
Мы можем установить Passport can с помощью NPM следующим образом:
$ npm install passport
Использование паспорта
Рассмотрим простой пример аутентификации с помощью Passport. Здесь мы должны настроить стратегию (или стратегии) аутентификации перед аутентификацией любых запросов.
Ниже приведен пример использования LocalStrategy
для аутентификации по имени пользователя/паролю.
var passport = require('passport'), LocalStrategy = require('passport-local').Strategy; passport.use(new LocalStrategy( function(username, password, done) { User.findOne({ username: username }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false); } if (!user.verifyPassword(password)) { return done(null, false); } return done(null, user); }); } ));
Затем, чтобы аутентифицировать запросы, вы должны вызвать passport.authenticate()
, определяя выбранную вами стратегию аутентификации.
app.post('/login', passport.authenticate('local'), function(req, res) { // If this function gets called, authentication was successful. // `req.user` contains the authenticated user. res.redirect('/users/' + req.user.username); });
4. Morgan — регистрируйте HTTP-запросы и ошибки
Morgan — это промежуточное ПО регистратора HTTP-запросов для Node.js, обычно используемое для приложений Express.
Он упрощает процесс, создавая журналы для каждого запроса и ошибки API. Лучше всего то, что вы можете использовать предопределенный формат или создать его с нуля, в зависимости от ваших требований.
Особенности Моргана
- Он регистрирует HTTP-запросы вместе с некоторой другой информацией. Вы также можете настроить то, что вы хотите регистрировать.
- Очень полезно при отладке, а также если вы хотите создавать файлы журнала.
Морган имеет более 12,88 млн загрузок NPM в месяц и 6,8 тыс. звезд на GitHub.
Монтаж
Мы можем установить Morgan через NPM с помощью следующей команды.
$ npm install morgan
Использование имени Морган
Чтобы использовать morgan
на своем сервере Express, вы можете вызвать экземпляр и передать его в качестве аргумента в .use()
middleware перед вашими HTTP-запросами.
1. Использование предопределенных форматов — у Morgan есть предопределенные строки формата для настройки промежуточного программного обеспечения со встроенным форматированием и параметрами.
Пример: предустановка tiny
обеспечивает минимальный вывод при регистрации HTTP-запросов.
const app = express(); app.use(morgan('tiny'));
2. Использование пользовательского формата — Morgan позволяет создавать собственные токены с помощью метода .token()
.
morgan.token('host', function(req, res) { return req.hostname; });
5. CORS — разрешить или ограничить запрошенные ресурсы на веб-сервере
CORS — это пакет node.js, который предоставляет промежуточное ПО Connect/Express для включения CORS с различными параметрами.
CORS расшифровывается как Cross-Origin Resource Sharing. Без предварительного согласия он предотвращает доступ других веб-сайтов или доменов к вашим веб-ресурсам непосредственно из браузера.
Особенности КОРС
- Поддерживает методы HTTP
GET
,POST
илиHEAD
. - Позволяет веб-программистам использовать обычный XMLHttpRequest, который лучше обрабатывает ошибки.
- Позволяет веб-сайтам анализировать ответы для повышения безопасности.
CORS имеет более 6 миллионов загрузок NPM в неделю и 5,2 тысячи рейтингов GitHub.
Монтаж
Вы можете установить его с помощью команды npm install
:
npm i --save express npm i --save cors
Использование CORS
Вы можете включить COR для всех маршрутов или только для одного маршрута.
1. Включить все запросы CORS
const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()) ......
2. Включить CORS для одного маршрута
app.get('/', cors(), (req, res) => { res.json({ message: 'Happy Coding' }); });
Примечание. Вы также можете использовать параметры конфигурации CORS для дальнейшей настройки.
Заключение
В этой статье я обсудил пять различных библиотек промежуточного программного обеспечения Express. Каждый из них имеет свои преимущества и недостатки. Вы сами выбираете лучшую библиотеку в соответствии с требованиями вашего проекта.
Итак, я надеюсь, что мои рекомендации помогут вам принять мудрое решение при выборе библиотек промежуточного программного обеспечения Express для вашего следующего проекта. И не забудьте поделиться своим опытом в разделе комментариев, если вы уже использовали их.
Спасибо за чтение !!
Создавайте компонуемые веб-приложения
Не создавайте веб-монолиты. Используйте Bit для создания и компоновки несвязанных программных компонентов — в ваших любимых фреймворках, таких как React или Node. Создавайте масштабируемые интерфейсы и серверные части с мощным и приятным опытом разработки.
Перенесите свою команду в Bit Cloud, чтобы совместно размещать и совместно работать над компонентами, а также значительно ускорить, масштабировать и стандартизировать разработку в команде. Начните с компонуемых интерфейсов, таких как Design System или Micro Frontends, или исследуйте компонуемый сервер. Попробуйте →