在Node.js中使用非局部变量是否安全?

时间:2012-01-22 00:11:56

标签: javascript node.js scope express

在Node.js / Express.js中做这样的事情是否安全?

// use Object.create(null) so we don't have to worry about key collisons
// see http://www.devthought.com/2012/01/18/an-object-is-not-a-hash/
var theHash = Object.create(null);

exports.store = function (req, res) {
   key = getUniqueKey();
   theHash[key] = req.param('val');
   // finish the request, &c.
}

exports.retrieve = function (req, res) {
   res.end(theHash[req.param('key')]);
}

基本上,我正在构建一个短命的短URL服务,这似乎是一种简单快捷的方法。每24小时从哈希中删除项目,因此它不会变大。这样安全,还是需要使用某种数据库?

1 个答案:

答案 0 :(得分:1)

如果你需要提示(根据评论),那么是的,这是糟糕的设计,但没有特别错误。

您最好使用Redis,内存密钥=>值存储。你所做的事情并没有错,但是你正确地注意到在本地保存你的密钥感觉“很脏”(出于几个原因,但关键是如果节点死了,你会失去一切)。