variables“安全”在node.js

我一直在用express和mongoDB在node.js中devise一个web应用程序,而且我发现我在脚本中声明的任何variables都可以被所有用户访问,因为节点作为一个单独的线程运行。 例如,我使用的是服务器端表单validation器,下面是它的一部分:

app.post('/purchase', requireLogin, function(req, res) { var b = req.body; var ee; for (i in b) { if (!validatePresenceOf(b[i])) { var ee="Please fill out all fields.<br />\n"; } } var exp = b.exp_mm+"/"+b.exp_yy; var d = /^(0[1-9]|1[012])[- /.]\d\d$/ if (!d.test(expiration)) { ee+="Expiration date is invalid.<br />\n" } if (!isValidCreditCard(b.card_type, b.card_num)) { ee+="Credit card number is invalid.<br />\n"; } }); 

我想知道如果另一个用户几乎在同一时间进行购买,可以在validation器结束之前通过第二个请求重新定义variablesb吗? 如果可以的话,那么最好的解决方法是什么?每当我声明一个variables时,会发生这种情况吗? 看起来这可能会导致一些安全问题,如果一个variables在一个过程完成之前被改变的话。

谢谢!

不,这个variables将不会被共享,因为它只会对由于函数closures而运行的进程具有词法范围。

事实上,你在函数中用var b声明它定义它有词法作用域。