gpt4 book ai didi

javascript - 如何正确清理 NestJS 输入?

转载 作者:行者123 更新时间:2023-12-05 00:39:25 25 4
gpt4 key购买 nike

我问这个是因为我似乎无法得到一个直接的答案。
因此,NestJS 通过使用装饰器有一种非常优雅的方式来处理验证。也就是说,您使用您期望的属性定义 DTO 类,并使用类验证器装饰器对它们进行注释。例如,假设我们有一个接受来自联系表单的输入的路由。

class ContactInfoDTO {
@IsString()
@IsNotEmpty()
name: string

@IsEmail()
email: string

@IsString()
@IsNotEmpty
subject: string

@IsString()
@IsNotEmpty()
body: string

}
这非常适合验证。如果我输入了无效的电子邮件,它将按预期拒绝。但是,这是我的问题。输入 sanitizer 呢?比如说,我在 body 参数中输入了一些 JavaScript?比如说,我的 body 是这样的:
body: “Hello <script>//some malicious code here</script>”
现在,这仍然被接受。即使脚本标签没有转换为 HTML 实体,这确实会带来一些安全风险。
所以,我的问题是 NestJS 是否有任何内置的清理机制?有这方面的适当文件吗?因为我真的找不到任何东西,尽管这种东西在 Web 开发环境中非常重要。
在 NestJS 中进行输入清理的最佳实践是什么?

最佳答案

使用sanitize-htmlTransform像这样:

import { ApiProperty } from '@nestjs/swagger';
import { Transform } from 'class-transformer';
import { IsString } from 'class-validator';
import * as sanitizeHtml from 'sanitize-html';

export class DocumentDto {
@ApiProperty()
@IsString()
@Transform((value: string) => sanitizeHtml(value))
public content: string;
}

关于javascript - 如何正确清理 NestJS 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64313399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com