私はexpressとmongoDBでnode.jsにWebアプリケーションを設計していて、スクリプト内で宣言した変数にはすべてのユーザーがアクセスできるようになっています単一のスレッドとして実行されます。変数bが第二で再定義することができ、node.jsの変数 "security"
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";
}
});
別のユーザーが購入ほぼ同時に行う場合、私は疑問に思って:たとえば、私は、サーバー側のフォームバリデータを使用しています、ここでの作品ですバリデータが完了する前にリクエストしますか?可能であれば、これを回避する最良の方法は何でしょうか?これは変数を宣言するたびに発生しますか?これは、プロセスが完了する前に変数が変更された場合に、セキュリティ上の問題を引き起こす可能性があるようです。
ありがとうございます!
実際にはシングルスレッドです。これは、jsコードを一度に一度しか実行できないことを意味します。だから、あなたが想像するこれらの問題(並列に2回実行される関数)は、一度に1ブロックのコードしか実行できないために発生しません。 – Raynos
@Raynosには語彙スコープの問題もあります) – jcolebrand