[英]How can I determine if a user is still logged in using the PingFederate OpenID Connect Implicit Client flow?
[英]How to securely determine if user is logged in using client-session
我正在將此軟件包用於用戶會話: https : //www.npmjs.com/package/client-sessions
登錄進行得很好,但是我不確定是否要檢查用戶是否正確安全地登錄。 我相信會話是加密的,但似乎只是檢查if(req.session && req.session.user)
是否不夠安全。 這是檢查用戶是否已登錄的正確方法嗎? 需要說明的是,在我指示的30分鍾之后,用戶將被登錄並被踢出,但我並不是黑客,我也不希望人們只是修改Cookie來進入其他用戶的帳戶。
var session = require('client-sessions');
app.use(session({
cookieName: 'session',
secret: config.secret,
duration: 30 * 60 * 1000,
activeDuration: 5 * 60 * 1000
}));
router.get('/', function(req, res, next) {
if(req.session && req.session.user)
return res.redirect('amazingpage');
else
res.render('index');
});
就像您說的那樣,僅檢查用戶提供的數據是不安全的。
通常,服務器將這樣的信息保存在會話中,並通過SSL隧道分發具有唯一(隨機)ID的會話Cookie 。 如果用戶提供其他ID,則極有可能不存在,因此不會造成任何傷害。 SSL隧道在這里很重要,因此“中間人”無法讀取ID並將其聲明為自己的會話。 請參閱會話劫持 。
如果您不想在服務器上存儲比絕對必要更多的信息,則還可以使用僅服務器知道的密鑰來加密此數據,並像防止SYN泛濫那樣將密碼存儲在客戶端上。 請參閱SYN cookie 。 如果采取這種方式,請確保使用一種密碼模式,以防止用戶修改Cookie。 (通常使用CBC )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.