[XSS] Expressjs阻止运行脚本形成POST请求

时间:2016-04-21 09:40:31

标签: javascript security express xss

我是ExpressJs的新手。我有关于发布javascript的问题

app.get('/nothing/:code',function(req, res) {
    var code = req.params.code;
    res.send(code)
});

如果我发布javascript标记,它会运行。有办法防止这种情况吗?

1 个答案:

答案 0 :(得分:1)

有很多可能的HTML sanitizers(因为simple search on NPM会为您提供可在nodejs代码中使用的列表)。

最简单的方法是简单地使用内置的“escape”功能,但这不会阻止许多XSS攻击。

app.get('/nothing/:code',function(req, res) {
   var code = escape(req.params.code);
   res.send(code)
});

更好的解决方案是使用专为此目的而设计的库。例如,如果您使用了santizier库(Google Caja's HTML sanitizer packaged for node):

var sanitizer = require('sanitizer');
...
app.get('/nothing/:code',function(req, res) {
   var code = sanitizer.sanitize(req.params.code);
   res.send(code)
});