关于expressionvalidation的几个问题

我有几个有关节点inputvalidation的问题,也许有一些概念我只是误解,需要澄清。 我目前正在使用express-validator。

我目前有这样的东西:

function validate(req) { req.assert('name', 'Please enter a name').notEmpty() req.assert('email', 'Please enter an email').notEmpty() var errors = req.validationErrors(); return errors; }; app.post('/contactform', function(req, res){ var err = validate(req); if (!err) { res.send('everything is good to go') } else { res.send(err) } }); 

我理解validation部分,但是一旦我清理了信息,我该如何去实际使用信息呢?

我已经尝试了一些东西

 var email = req.sanitize('email').toString() 

但这只是给了我一个[object object]

所以我有几个问题:

  1. 我如何真的去使用消毒的string? 或者express-validator模块只是validation/清理,我需要做其他事情才能真正使用清理输出?
  2. 另外,在input信息进行安全validation之前应该进行消毒处理?

编辑:所以我看着express-validator的源代码,我发现参数被存储为req.param('name')req.param('email') 。 我假设,如果您清理和/或validation参数,然后访问它们,您会收到消毒版本。 这回答了我的第一个问题,仍然对第二个关于总体安全性的问题感到好奇。

我使用trim()链接sanitize():

var str = req.sanitize('input').trim();