我有以下代码可以自动从views / static文件夹加载我的handelbar模板,而无需为每个页面手动设置路由。
app.get("/:template", function(req,res){
var template = req.params.template; // Is this safe?
res.render("static/" + template, function(err, html) {
if (err) {
res.send(404, 'Sorry cant find that!');
} else {
res.send(html);
}
});
});
它工作正常,但我担心这可能会使我的应用程序暴露于安全问题。任何建议我如何能做得更好。我正在使用Express。非常感谢你的帮助。
答案 0 :(得分:1)
我认为这很安全。
通常,您必须担心传递的路径包含../
之类的内容(返回目录级别),但这些路径与您的路由不匹配。此外,您声明的路线将在/
处停止匹配,因此/foo/../bar
之类的请求也不会匹配。
可能发生的问题是当static
目录包含您不想公开的文件时:/secret.js
的请求至少会尝试呈现名为static/secret.js
的文件。