我已经实现了express-validator
,并且正在尝试清理用户正在搜索特定查询的输入字段。
我正在使用的测试查询是<script>Malicious code</script
。当请求进来时,我使用:
req.sanitizeQuery('searchQuery');
当我检查查询是否已被清理时,字符串没有以任何方式被更改/清理。
我可能从根本上误解了消毒,在这种情况下请指出。如果我是,那么我可以去填补我在知识方面的空白,但与此同时,我可以向我的消毒剂提出什么“测试”查询来检查它是否正常工作?
答案 0 :(得分:2)
查看文档,express-validator旨在用作中间件。
所以我想说你想要一些看起来像这样的代码:
const { validationResult } = require('express-validator/check');
const { sanitizeQuery } = require('express-validator/filter');
// Setup the request handler, give it some validation middleware
// then the main request handler
app.get('/search', [sanitizeQuery('searchQuery').escape()], function(req, res, next) {
// Deal with any errors
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.mapped() });
}
// req.query.searchQuery was sanitised via the middleware, it should now
// be clean.
console.log(req.query.searchQuery);
});
我们正在使用sanitizeQuery函数作为中间件,它将清理值req.query.searchQuery
。我假设它是一个消毒功能,它不会触发来自validationResult的任何错误,而是会为您返回一个干净的响应。
然后,您应该可以在{{host}}/search?searchQuery= <script>Malicious code</script>
{{host}}
申请服务,http://localhost:8080
是您的服务主机,例如$(".l2-section-heading").filter(function() { //targeting the title div
return $(this).text().trim() === "";
}).closest('.l2-webpart').hide();
。