Pisze sobie stronę, że której chcę zrobić logowanie i w sesji na serwerze przechowywać informacje o zalogowanym użytkowniku. Dane o sesji mają być też dostępnie dla WebSocket. Z tym nie mam problemu (z logowaniem i przekazaniem danych do WebSocket), ale dziwi mnie jedna rzecz.
Kod
var express = require('express');
var session = require('express-session');
var app = express();
app.use(session({
secret: 'xxxxxxxxxxxxxxx',
name: 'sessionNazwa',
resave: false,
saveUninitialized: true,
cookie: {
maxAge: 24 * 60 * 60 * 1000,
httpOnly: true
}
}));
var session = require('express-session');
var app = express();
app.use(session({
secret: 'xxxxxxxxxxxxxxx',
name: 'sessionNazwa',
resave: false,
saveUninitialized: true,
cookie: {
maxAge: 24 * 60 * 60 * 1000,
httpOnly: true
}
}));
Po wejściu na stronę, pojawia się ciasteczko 'sessionNazwa' z przypisanym numerem sesji. Po zalogowaniu na stronę, widać, że użytkownik jest zalogowany.
Rzecz w tym, że w momencie jak przekopiuję numer sesji z ciasteczka i podmienię z numerem sesji w innej przeglądarce, to wszystkie dane 'zalogowania' przenoszą sie do innej przeglądarki. Innymi słowy, przenosi się sesja.
To że pod tym konkretnym numerem z ciasteczka przenosi się sesja mnie nie dziwi, ale dziwi mnie to, że moduł 'express-session' nie wykrywa przekopiowania ciasteczka i nie zamienia numeru sesji. Z tego co pamietam, w przypadku PHP, przy podmianie numeru sesji, serwer generował nowy identyfikator.
Dlaczego w module 'express-session', przy podmianie numeru sesji nie jest on generowany i podmieniany na nowy? Jak się dodatkowo zabezpieczyć?