安全

安全

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

头盔

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

$ npm i --save helmet

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

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

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配置对象,而不是传递布尔值。

CSRF

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

$ npm i --save csurf

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

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

限速

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

$ 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。