Переменная «безопасность» в node.js - PullRequest
1 голос
/ 13 сентября 2011

Я проектировал веб-приложение в node.js с помощью express и mongoDB, и мне просто пришло в голову, что любые переменные, которые я объявляю в скрипте, будут доступны всем пользователям, потому что узел работает как один поток.Например, я использую средство проверки форм на стороне сервера, вот его фрагмент:

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";
}
});

Мне интересно, если другой пользователь совершает покупку почти в то же время, может ли переменная b быть переопределена с помощьювторой запрос до завершения валидатора?Если это возможно, то как лучше всего обойти это, и будет ли это происходить каждый раз, когда я объявляю переменную?Похоже, что это может вызвать некоторые проблемы с безопасностью в случае изменения переменной до завершения процесса.

Спасибо!

1 Ответ

2 голосов
/ 13 сентября 2011

Нет, эта переменная не будет использоваться совместно, потому что она все еще будет иметь лексическую область действия только для процесса, работающего из-за закрытия функции.

Тот факт, что вы объявляете это с помощью var b в функции, определяет, что он имеет эту лексическую область видимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...