Опишу реализацию авторизации/регистрации ит.д., которую имею:
1) Пользователь зашел на сайт, ему повесили куку, если и он ее не имеет.
2) Далее если пользователю требуется доступ к каким-то функциям предполагающим регистрацию, он водит e-mail, его регистрирует, пароль летит на емаил. Пользователь авторизуется на час.
3) Час проходит требуется вести пароль.. (Планирую переделать на бездействие пользователя в течении установленного им времени).
И теперь вопрос. Хеш куки не меняется всю жизнь пользователя (пока). Это на мой взгляд не безопасно...
Вообщем появилась идея хеш куки менять. Ничто не мешает его менять при каждом запросе пользователя: проверить верен ли его хеш, если верен - сменить на новый. И при следующем обращении проделать тоже самое и т.д.
При таком варианте перехват куки практически не возможен, и пользователь сразу заметит... что его выкидывает с ошибкой хеша. Но стоит ли так делать? Возникает проблема, что пользователь сможет работать параллельно только с одного устройства... Ну или максимум с разных IP адресов. А Если он заходит с мобилы и с компа из домашней сети... то алгоритм еще усложняется.
Проблема нескольких устройств решается созданием хэшей под каждое устройство. Т.е. хэш куки храним не в таблице с пользователями, а в отдельной таблице. Один пользователь сможет иметь несколько хэшей. Там же добавляем User-agent. IP может сменится даже в рамках одного провайдера при разных подключениях, запрашивать пароль в этой ситуации совсем не логично. Но если стоит вопрос о выходе после часа бездействия, то можно и IP добавить. Предложенный метод позволит менять хэш при каждом запросе, если на то есть желание.
Понятно, но имеет ли смысл так часто менять хеш. Прихожу к выводу что раз в 9 часов, оптимальней.
А вот про запрос пароля при смене айпи думаю, что однозначно да. Это как раз ситуация У Вас украли куку, внешне будет выглядеть именно так.