安全
安全
在本章中,您将学习一些可以提高应用程序安全性的技术。
头盔
通过适当地设置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。