Безопасность
В этой главе мы рассмотрим различные методы, которые помогут вам повысить безопасность ваших приложений.
Helmet
Helmet может помочь защитить ваше приложение от некоторых известных веб-уязвимостей, установив соответствующие заголовки HTTP. Как правило, Helmet - это всего лишь набор из 14 небольших middleware функций, которые устанавливают связанные с безопасностью HTTP-заголовки (подробнее).
Начните с установки необходимого пакета:
$ 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 пакет cors. Этот пакет предоставляет различные опции, которые вы можете настроить в соответствии с вашими требованиями. Чтобы включить CORS, вызовите метод enableCors() для объекта приложения Nest.
const app = await NestFactory.create(AppModule);
app.enableCors();
await app.listen(3000);Метод enableCors() принимает необязательный аргумент объекта конфигурации. Доступные свойства этого объекта описаны в официальной документации CORS.
Альтернативный способ: включите CORS с помощью объекта параметров метода create(). Установите для свойства cors значение true, чтобы включить CORS с настройками по умолчанию. Кроме того, передайте объект конфигурации CORS в качестве значения свойства cors, чтобы настроить его поведение.
const app = await NestFactory.create(AppModule, { cors: true });
await app.listen(3000);CSRF
Подделка межсайтовых запросов (Cross-site request forgery)(также известная как CSRF или XSRF) - это тип вредоносного эксплойта веб-сайта, при котором несанкционированные команды передаются от пользователя, которому веб-приложение доверяет. Чтобы смягчить этот вид атаки, вы можете использовать пакет csurf.
Начните с установки необходимого пакета:
Как объяснено на странице csurf middleware, модуль csurf требует, чтобы сначала было инициализировано либо middleware сессий, либо парсер cookie. Пожалуйста, ознакомьтесь с этой документацией для получения дальнейших инструкций.
После завершения установки примените csurf middleware в качестве глобального middleware.
Ограничение частот
Распространенным методом защиты приложений от атак грубой силы является rate-limiting. Многие пакеты Express существуют для обеспечения функции ограничения скорости. Одним из популярных является express-rate-limit.
Начните с установки необходимого пакета:
После завершения установки примените rate-limiter в качестве global middleware.
При наличии балансировщика нагрузки или обратного прокси-сервера между сервером и интернетом Express может потребоваться настроить доверие к заголовкам, установленным прокси-сервером, чтобы получить правильный IP-адрес для конечного пользователя. Для этого сначала используйте интерфейс платформы NestExpressApplication при создании экземпляра app, а затем включите параметр доверенный прокси-сервер:
Если вы используете FastifyAdapter, рассмотрите возможность использования fastify-rate-limit вместо этого.
Last updated