Языки программирования

Express.js 5 выпущен с повышенной безопасностью

Express.js 5 выпущен с повышенной безопасностью

Вышел Express.js 5, спустя десять лет после выхода Express.js 4. В новом выпуске отказались от поддержки устаревших версий Node.js, были решены проблемы безопасности и упрощено обслуживание.

Express.js (часто упоминается просто как Express) описывается как быстрый, не требующий вмешательства, минималистичный веб-фреймворк для Node.js, предоставляющий надежный набор функций для веб- и мобильных приложений.

Он может использоваться для построения RESTful API с помощью Node.js, и имеет большое значение как стандартный серверный фреймворк для Node.js, а также как back-end компонент для стека MEAN наряду с MongoDB в качестве базы данных и веб-фреймворком Angular JavaScript. Express.js был создан Ти Джеем Головайчуком, известным разработчиком с открытым исходным кодом, который участвовал в создании таких проектов, как Jade, Mocha, Stylus и Koa. Он был вдохновлен небольшим и гибким веб-фреймворком Sinatra на основе Ruby, поэтому основной фреймворк Express.js минимален, а дополнительные функции доступны в виде плагинов. Среди популярных промежуточных модулей Express - body-parser, cookie-parser, cors, helmet, morgan и passport.

Разработчики говорят, что новый релиз был задуман как скучный, с целью разблокировать экосистему и обеспечить более значимые изменения в будущих релизах. Они также говорят, что это сигнал экосистеме Node.js о том, что Express снова движется.

Значительная часть работы по возрождению Express.js была связана с безопасностью, начиная с аудита безопасности и работы над безопасностью в частных форках, результаты которой теперь включены в новый релиз.

Одним из изменений, связанных с безопасностью, является отказ от поддержки регулярных выражений «подвыражений» (regex). Команда говорит, что, к сожалению, очень легко написать регулярное выражение, которое будет иметь экспоненциальное время при разборе входных данных: Страшная атака на отказ в обслуживании с помощью регулярных выражений (ReDoS). По их словам, предотвратить это очень сложно, но, будучи библиотекой, преобразующей строки в регулярные выражения, команда берет на себя ответственность за такие аспекты безопасности.

В этом выпуске также больше не поддерживаются упорядоченные числовые параметры. В Express v4 числовые параметры можно было получить с помощью групп захвата regex, но теперь все параметры должны быть именованными.

В этом выпуске прекращена поддержка Node.js версий до v18. По словам разработчиков, поддержка старых версий Node.js сдерживала многие критические изменения в производительности и удобстве обслуживания. Это изменение также позволяет сделать более стабильной и удобной непрерывную интеграцию (CI), внедрить новые возможности языка и времени выполнения, а также отказаться от зависимостей, которые больше не нужны.

Поддержка обещаний была решена в части добавления поддержки возвращенных отклоненных обещаний из ошибок, возникающих в промежуточном ПО. Это не включает вызов next из возвращенных разрешенных обещаний. Команда признает, что еще многое предстоит добавить, и что они работают над другими аспектами.

Кроме того, внесен ряд изменений в парсер тел, а из Express v5 удален ряд устаревших сигнатур методов, чтобы сделать API более предсказуемым и простым в использовании.

Express.js 5 доступен уже сейчас.

Читайте также