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

[XSS]Expressjs prevent run script form POST request

本文关键字:POST 请求 运行 脚本 XSS Expressjs      更新时间:2023-09-26

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

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

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

市面上有许多可能的HTML清理器(因为在NPM上进行的简单搜索将为您提供可以在nodejs代码中使用的列表)。

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

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

更好的解决方案是使用为此目的设计的库。例如,如果您使用了 santizier 库(Google Caja 为 node 打包的 HTML 清理器):

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