Безопасность

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

Helmet

Helmetarrow-up-right может помочь защитить ваше приложение от некоторых известных веб-уязвимостей, установив соответствующие заголовки HTTP. Как правило, Helmet - это всего лишь набор из 14 небольших middleware функций, которые устанавливают связанные с безопасностью HTTP-заголовки (подробнееarrow-up-right).

Начните с установки необходимого пакета:

$ npm i --save helmet

После завершения установки примените его в качестве глобального middleware.

import * as helmet from 'helmet';
// somewhere in your initialization file
app.use(helmet());

CORS

Cross-origin resource sharing (CORS) - это механизм, позволяющий запрашивать ресурсы из другого домена. Под капотом Nest использует Express пакет corsarrow-up-right. Этот пакет предоставляет различные опции, которые вы можете настроить в соответствии с вашими требованиями. Чтобы включить CORS, вызовите метод enableCors() для объекта приложения Nest.

const app = await NestFactory.create(AppModule);
app.enableCors();
await app.listen(3000);

Метод enableCors() принимает необязательный аргумент объекта конфигурации. Доступные свойства этого объекта описаны в официальной документации CORSarrow-up-right.

Альтернативный способ: включите CORS с помощью объекта параметров метода create(). Установите для свойства cors значение true, чтобы включить CORS с настройками по умолчанию. Кроме того, передайте объект конфигурации CORSarrow-up-right в качестве значения свойства cors, чтобы настроить его поведение.

const app = await NestFactory.create(AppModule, { cors: true });
await app.listen(3000);

CSRF

Подделка межсайтовых запросов (Cross-site request forgery)(также известная как CSRF или XSRF) - это тип вредоносного эксплойта веб-сайта, при котором несанкционированные команды передаются от пользователя, которому веб-приложение доверяет. Чтобы смягчить этот вид атаки, вы можете использовать пакет csurf.

Начните с установки необходимого пакета:

circle-info

Как объяснено на странице csurf middlewarearrow-up-right, модуль csurf требует, чтобы сначала было инициализировано либо middleware сессий, либо парсер cookie. Пожалуйста, ознакомьтесь с этой документацией для получения дальнейших инструкций.

После завершения установки примените csurf middleware в качестве глобального middleware.

Ограничение частот

Распространенным методом защиты приложений от атак грубой силы является rate-limiting. Многие пакеты Express существуют для обеспечения функции ограничения скорости. Одним из популярных является express-rate-limitarrow-up-right.

Начните с установки необходимого пакета:

После завершения установки примените rate-limiter в качестве global middleware.

При наличии балансировщика нагрузки или обратного прокси-сервера между сервером и интернетом Express может потребоваться настроить доверие к заголовкам, установленным прокси-сервером, чтобы получить правильный IP-адрес для конечного пользователя. Для этого сначала используйте интерфейсarrow-up-right платформы NestExpressApplication при создании экземпляра app, а затем включите параметр доверенныйarrow-up-right прокси-сервер:

circle-info

Если вы используете FastifyAdapter, рассмотрите возможность использования fastify-rate-limit вместо этого.

Last updated