безопасный экспресс-сеанс: правда

app.use(session({
    secret: "testing credentials",
    store: sessionStore,
    resave: true,
    saveUninitialized: true,
    cookie  : {
        httpOnly: true,
        //secure: true,
        maxAge  : 60 * 60 * 1000 
    }
}));

Я работаю над некоторыми проблемами безопасности на моем недавно разработанном веб-сайте. И после некоторых исследований в Интернете, если установлено secure = true, это будет более безопасно. Однако, если установлено secure: true, тогда информация внутри сеанса будет теряться каждый раз, когда пользователь отправляет другой запрос. Есть ли способ решить эту проблему? Если в cookie: не указано «secure: true», сеанс будет длиться в течение этого maxAge.


person Pano    schedule 29.10.2016    source источник


Ответы (1)


Если файл cookie установлен с флагом secure, он будет отправлен на сервер браузером только через https, а не через обычный http. Это должно быть значением по умолчанию для производственных сред.

Однако при разработке приложения вы, вероятно, используете простой http на своем компьютере. Если в этом случае вы установите файл cookie сеанса как secure (используя простой http), сервер никогда не получит его, и вы будете получать новый пустой сеанс при каждом запросе.

Короче говоря, вы должны установить файл cookie как secure только в том случае, если вы используете https (то есть на более поздних этапах вашего конвейера разработки и, безусловно, в производстве).

С другой стороны, если вы установите maxAge, файл cookie будет сохранен, что не рекомендуется для сеансовых файлов cookie. Без maxAge файл cookie будет храниться до тех пор, пока пользователь не закроет браузер, и обычно не сохраняется на диске, что является правильным поведением для сеансовых файлов cookie.

person Gabor Lengyel    schedule 29.10.2016
comment
Как же тогда это делает Youtube? Они также используют файлы cookie, и я не думаю, что у них есть maxAge опора. - person Mike K; 10.09.2020