Nestjs安全_Nestjs CORS与Nestjs CSRF配置

NestJs仿小米商城项目实战视频教程(视频+课件+源码) https://www.itying.com/goods-1139.html


Nestjs安全

在本章中,您将学习一些可以提高应用程序安全性的技术。

Helmet

通过适当地设置HTTP头,Helmet 可以帮助保护您的应用免受一些众所周知的Web漏洞的影响。通常,Helmet只是12个较小的中间件函数的集合,它们设置与安全相关的HTTP头(阅读更多)。首先,安装所需的包:

$ npm i --save helmet

安装完成后,将其应用为全局中间件。

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

Nestjs CORS

跨源资源共享(CORS)是一种允许从另一个域请求资源的机制。在引擎盖下,Nest使用了 cors 包,它提供了一系列选项,您可以根据自己的要求进行自定义。为了启用CORS,您必须调用enableCors()方法。

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

此外,您可以将配置对象作为此函数的参数传递。可用的属性在官方 cors 存储库中详尽描述。另一种方法是使用Nest选项对象:

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

您也可以使用cors配置对象(更多信息),而不是传递布尔值。

Nestjs CSRF

跨站点请求伪造(称为CSRF或XSRF)是一种恶意利用网站,其中未经授权的命令从Web应用程序信任的用户传输。要减轻此类攻击,您可以使用 csurf 软件包。首先,安装所需的包:

$ npm i --save csurf

?> 正如csurf中间件页面所解释的,csurf模块需要首先初始化会话中间件或cookie解析器。有关进一步说明,请参阅该文档

安装完成后,将其应用为全局中间件。

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

Nestjs 限速

为了保护您的应用程序免受暴力攻击,您必须实现某种速率限制。幸运的是,NPM上已经有很多各种中间件可用。其中之一是express-rate-limit

$ npm i --save express-rate-limit

安装完成后,将其应用为全局中间件。

import * as rateLimit from 'express-rate-limit';
// somewhere in your initialization file
app.use(
  rateLimit({
    windowMs: 15 * 60 * 1000, // 15 minutes
    max: 100, // limit each IP to 100 requests per windowMs
  }),
);

?> 提示: 如果您在FastifyAdapter下开发,请考虑使用 fastify-rate-limit