我有一个Express请求处理程序,它接受一个请求,其中包括用户表单输入(email
),向我的另一个(受信任的)端点发出请求(通过newFunctionWithRequest
),然后从新的响应(newResponse
)返回数据。
export const Handler = async (req: Request, res: Response, next: NextFunction) => {
const { newResponse } = await newFunctionWithRequest(req)
res.send(newResponse.data) // Snyk identifies this line as the problem
}
Snyk
已识别XSS vulnerability
:
Unsanitized input from the HTTP request body flows into send, where it is used to render an HTML page returned to the user. This may result in a `Cross-Site Scripting attack (XSS)`
如何修复此漏洞?
3条答案
按热度按时间jm81lzqq1#
我建议从请求对象
req
中获取特定的元素,然后将它们传递给newFunctionWithRequest
函数。这意味着函数不会接收任何它不期望的东西。例如:
您还可以验证它是否是正确的类型,并根据需要对其进行清理。
另一种选择是使用Joi这样的库来验证传入的请求。
bxgwgixi2#
当我有类似的需求时,我创建了自定义中间件,您可以将其集成到任何端点(或全局地针对每个请求),它将检查请求
body
中的任何输入是否有问题。它将检查是否:
=
,这使得Excel导入容易受到攻击。中间件
用法
whlutmcx3#
DOMPurify支持服务端和客户端。
我相信这就是你要找的那种图书馆。
https://github.com/cure53/DOMPurify