将req作为expressJs中res.render中的变量传递是否安全?

时间:2015-06-07 14:15:09

标签: node.js express handlebars.js

我正在使用NodeJs + ExpressJs + Handlebars来构建一个网站。渲染页面时,我需要每次传递3件事:isAuthenticated,userEmail和FlashMsg。 而不是这个:

res.render('/webPage', {isAuthenticated: req.isAuthenticated(), userEmail: req.user.email, flashMsg: req.flash()});

这样做是否安全,因此可以在页面上访问所有内容?:

res.render('/webPage', {req:req});

是否有太多东西传递给页面或者这不是问题? 感谢。

1 个答案:

答案 0 :(得分:0)

这取决于您的模板对您提供的对象执行的操作。它是否枚举对象的属性?如果是这样,那可能是一个坏主意。您的模板是否会尝试将req对象序列化为JSON?这也很糟糕。

如果您希望既安全又可以同时使用简洁的代码,那么您只能包含模板所关注的属性,如下所示:

var _ = require('underscore');
res.render('/webpage',
    _.pluck(req, ['isAuthenticated', 'user', 'flash'])
);