簡體   English   中英

如何安全地確定用戶是否使用客戶端會話登錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM