【发布时间】:2018-01-12 18:37:41
【问题描述】:
我的网站上有几个电子邮件输入字段。对于这些,我有 1 个 POST 路由:
app.post('/', function(req, res){
Email.create(req.body.email, function(err, newEmail){
if(err){
console.log(err);
} else {
res.redirect('/');
};
});
});
我从中学习的训练营告诉我,不法分子可以在这些输入中使用脚本。但是,当我尝试这样的事情时:
<script>alert('test')</script>
什么都没有发生。事实上,它只是被添加到我的 mongo 数据库中。
我还是按照训练营的建议安装了 express-sanitizer 并这样做了:
app.post('/', function(req, res){
req.body.email = req.sanitize(req.body.email);
Email.create(req.body.email, function(err, newEmail){
if(err){
console.log(err);
} else {
res.redirect('/');
};
});
});
但是,当我这样做并输入一些内容时,当我输入任何字符串或脚本时,我会收到一条错误消息,指出“ObjectParameterError”。
我的 app.use 看起来像这样:
app.use(bodyParser.urlencoded({extended: true}));
app.use(expressSanitizer());
关于如何最好地保护自己免受脚本以及如何正确实施 express-sanitizer 的任何建议?
【问题讨论】: