Рекомендуемые библиотеки промежуточного программного обеспечения 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-сертификатов. Вы можете выбрать один из трех параметров для использования.
  1. maxAge — определяет количество разделов для ожидаемой прозрачности сертификата.
  2. enforce — если true, будущие соединения, нарушающие политику прозрачности сертификата, должны быть отклонены пользовательским агентом. По умолчанию установлено значение false.
  3. 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, или исследуйте компонуемый сервер. Попробуйте →

Узнать больше