在后端使用 DOMPurify 清理表单数据时出错?
Mistake in using DOMPurify on the backend to sanitize form data?
我想知道是否可以在将表单保存到数据库之前使用 DOMPurify 来清理表单上的用户输入。这是我的 routes.js 文件夹中的表单 post:
.post('/questionForm', (req, res, next) =>{
console.log(req.body);
/*console.log(req.headers);*/
const questions = new QuestionForm({
_id: mongoose.Types.ObjectId(),
price: req.body.price,
seats: req.body.seats,
body_style: req.body.body_style,
personality: req.body.personality,
activity: req.body.activity,
driving: req.body.driving,
priority: req.body.priority
});
var qClean = DOMPurify.sanitize(questions);
//res.redirect(200, path)({
// res: "Message recieved. Check for a response later."
//});
qClean.save()
.then(result => {
//res.redirect(200, '/path')({
// //res: "Message recieved. Check for a response later."
//});
res.status(200).json({
docs:[questions]
});
})
.catch(err => {
console.log(err);
});
});
我还在页面顶部导入了包
import DOMPurify from 'dompurify';
当我 运行 服务器提交 post 请求时,它抛出 500 错误并声称 dompurify.sanitize 不是函数。我是不是在错误的地方使用它,and/or 在后端使用它是否正确?
这可能有点晚了,但对于像我这样碰巧 运行 进入这个用例的其他人,我发现了一个 npm 包,目前看来非常适合。它被称为同构-dompurify。
DOMPurify 需要 DOM 才能与之交互;通常由浏览器提供。 Isomorphic-dompurify feeds DOMPurify 另一个包,“jsdom”,作为一个依赖,就像一个补充虚拟 DOM 所以 DOMPurify 知道如何清理你的输入服务器端。
用包自己的话说“DOMPurify 需要一个 DOM 树作为基础,默认情况下它在 Node 中不可用。要在服务器端工作,我们需要一个假的DOM 将被创建并提供给 DOMPurify。这意味着 DOMPurify 服务器上的初始化逻辑与客户端上的不同。
我想知道是否可以在将表单保存到数据库之前使用 DOMPurify 来清理表单上的用户输入。这是我的 routes.js 文件夹中的表单 post:
.post('/questionForm', (req, res, next) =>{
console.log(req.body);
/*console.log(req.headers);*/
const questions = new QuestionForm({
_id: mongoose.Types.ObjectId(),
price: req.body.price,
seats: req.body.seats,
body_style: req.body.body_style,
personality: req.body.personality,
activity: req.body.activity,
driving: req.body.driving,
priority: req.body.priority
});
var qClean = DOMPurify.sanitize(questions);
//res.redirect(200, path)({
// res: "Message recieved. Check for a response later."
//});
qClean.save()
.then(result => {
//res.redirect(200, '/path')({
// //res: "Message recieved. Check for a response later."
//});
res.status(200).json({
docs:[questions]
});
})
.catch(err => {
console.log(err);
});
});
我还在页面顶部导入了包
import DOMPurify from 'dompurify';
当我 运行 服务器提交 post 请求时,它抛出 500 错误并声称 dompurify.sanitize 不是函数。我是不是在错误的地方使用它,and/or 在后端使用它是否正确?
这可能有点晚了,但对于像我这样碰巧 运行 进入这个用例的其他人,我发现了一个 npm 包,目前看来非常适合。它被称为同构-dompurify。
DOMPurify 需要 DOM 才能与之交互;通常由浏览器提供。 Isomorphic-dompurify feeds DOMPurify 另一个包,“jsdom”,作为一个依赖,就像一个补充虚拟 DOM 所以 DOMPurify 知道如何清理你的输入服务器端。
用包自己的话说“DOMPurify 需要一个 DOM 树作为基础,默认情况下它在 Node 中不可用。要在服务器端工作,我们需要一个假的DOM 将被创建并提供给 DOMPurify。这意味着 DOMPurify 服务器上的初始化逻辑与客户端上的不同。