2016-05-24 3 views
0

AngularJS spaでのユーザー認証のためのトークンなしでexpess-sessionを使用するのは安全ですか?user authのトーク​​ンなしでexpress-sessionを使用するのは安全ですか?

ユーザがセッションを変更することはできますか?ログインに

は、資格証明書(電子メール、パスワード)を明示ルーティングで

connection.query('SELECT username, password, emailCode FROM `user` WHERE `email` = ?', [ email ], function (error, results, fields) { 
    if(error) console.log(error); 
    if(!results.length) return res.json({ err: 'Invalid password or email address' }); // invalid email 
    if(!bcrypt.compareSync(password, results[ 0 ].password)) return res.json({ err: 'Invalid password or email address' }); // invalid password 
    req.session.username = results[ 0 ].username; 
    req.session.email = email; 
    req.session.loggedIn = true; 
    res.json({ username: req.session.username, msg: 'Successfully logged in' }); 
}); 

でPOSTリクエストをtheresのこのようなLOGGEDINチェックをtheresの:すべてのクライアント側に必要なデータがある

app.get('/views/user/:name', function(req, res) { 
    var name = req.params.name; 
    if (typeof req.session.loggedIn !== 'undefined' && req.session.loggedIn) { 
     return res.sendFile('views/user/' + name, { root: __dirname + '/public/' }); 
    } else {   
     return res.sendFile('views/error.html', { root: __dirname + '/public/' }); 
    } 
}); 

req.session.loggedInがtrueの場合、httpを介してリクエストを取得してユーザー情報などを返します

正常に動作しているようですが、安全ですか?

+1

「トークンなし」とはどういう意味ですか?セッションはトークンを持っていないのですか?彼らは後でどのように再調整されますか?トークンは一般的に問題ありませんが、パスワードを変更するなどの重要な作業にはパスワードが必要です。そうであれば、クッキーを持つ誰も、クッキーに関連付けられたユーザーを偽装することができます。 – dandavis

+1

クッキーに頼ることの浮き沈みについては、https://www.youtube.com/watch?v=tso5rhzQYBcをご覧ください。 – dandavis

答えて

1

アプリケーションで設定したセッションストアによって、セッションに格納されているデータに関する情報をクライアントに送信するかどうかを指定できます。つまり、セッションを保存するためにクッキーを使用すると、いくつかの情報がクライアント上にありますが、これはsigned cookiesであり、署名に使用された秘密を知らない限り、ユーザーはそれを改ざんすることはできませんサーバー上で定義されています。

+1

署名されたクッキーは秘密を提供せず、完全性のみを提供します。デバイス上のアプリケーションは、ストレージ上のフォルダからプレーンテキストのクッキーを読み取ることができます。 – dandavis

+0

@dandavis - 私は何か違うと言いましたか? –

+0

私は電子メール、ユーザー名などの情報を、ログに記録されている場合(req.session.loggedIn)、req.session.emailがデータベースと一致する場合に送信するだけで安全です。 – mcode

関連する問題