【发布时间】:2012-01-22 00:11:55
【问题描述】:
在 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 小时从哈希中删除项目,因此它不会变大。这是安全的,还是我需要使用某种数据库?
【问题讨论】:
-
安全吗?什么不安全?
-
@Layke 我想确保我不会因为范围界定或其他原因(除了定期清除或服务器崩溃)而丢失存储的值。我知道这在一般的 Javascript 中是安全的,但我是 Node.js 的新手。我也想知道这是否是糟糕的设计。
-
另外,它在竞争条件下安全吗?
-
@DeaDEnD 好点。在这种情况下,这不是问题,因为 getUniqueKey 返回一个必须包含一个字母和一个数字的唯一键,但总的来说,这是一个很好的观点。我已经编辑了帖子以使示例代码更好。
标签: javascript node.js scope express