Чтобы сессия работала должным образом с балансировкой нагрузки, я бы сохранял ваши данные сессий в базе данных sql.
Файл cookie всегда должен иметь случайное значение, срок действия которого истекает. В некоторых случаях вы можете сохранить состояние в виде значения cookie, и это не будет опасной угрозой, например, предпочитаемый пользователем язык, но этого следует избегать, насколько это возможно. Включение HttpOnlyCookies - отличная идея.
Прочитайте A3: «Сломанная аутентификация и управление сеансами» в первой десятке OWASP за 2010 год. Одним из важных моментов в этом разделе является то, что https должен использоваться для всего сеанса. Если сеанс длится очень долго, это еще более важно.
Также имейте в виду, что «Помни меня» создает большое окно, в котором злоумышленник может «покататься» по сеансу. Это дает злоумышленнику очень много времени (месяцы?), В течение которого он может провести атаку CSRF. Даже если у вас есть защита от CSRF, злоумышленник может продолжать сеанс с XSS и XmlHttpRequest (HttpOnlyCookies предотвратит полный взлом). «Помни меня» делает другие угрозы, такие как xss, csrf, сниффинг более серьезными. Пока эти уязвимости устранены, у вас не должно быть проблем с реальными хакерами.
Самым простым (и безопасным) подходом к реализации функции «запомнить меня» было бы изменение тайм-аута сессии, чтобы сделать его очень большим (несколько месяцев). Если флажок «запомнить меня» снят, сохраните переменную сеанса с новым тайм-аутом (1 день от входа в систему). Имейте в виду, что даже если cookie удаляется браузером, когда он закрыт, сеанс все еще активен на стороне сервера. Если идентификатор сеанса украден, то он все еще может быть использован.