Не пойму, я для стенки объяснял то, что было в пред. сообщении?
При старте сессии:
1. редирект для HTTP авторизации - надежное хранение сессии и пароля для проверки
2. запись параметров браузера, коих очень много и % одинаковых браузеров практически нулевой
3. пароль в обычную куку (проверять только если куки включены, а это проверять, если браузер хотя бы 2 раза передавал куки)
4. пароль в защищенную куку
При изменении любого параметра - уничтожить сессию без вопросов.
При измении IP или длительном отстуствии юзера (причем сессия не была удалена сервером) - запросить защищенную куку. Дополнительно можно запросить пароль. При это временно блокировать сессию. Еще при этом же в форме писать в hidden полях все GET/POST переменные, чтобы не потерять текущее состояние юзера и не выкидывать на главную страницу после редиректов, требующих проверки защищенной куки или ввода пароля юзера.
Таким образом, проблемы смены IP или кражы номера сессии (особенно касается тупых юзеров, которые сами суют ссылки с сессиями всем подряд) не существует вообще. Можно сидеть и каждый раз подставлять новые левые прокси. При каждом изменении сайт незаметно для юзера (если нет установки дополнительно запросить пароль) проверит пароль HTTP авторизации, пароль в обычной куке (кроме куки сессии), пароль в защищенной куке, все параметры браузера. Далее PHP скрипт выдает форму с hidden полями с поступившими после смены IP GET/POST переменными и браузер вспоминает свое предыдущее сосотояние. Так сделано у меня в чате. И работает. Взломать никакими кражами номеров сессий или IP-подменой - нельзя. Кроме как перехватить все ключи или считать их из файла сессии на диске сервера. И даже юзер не сможет "взломать" самого себя, т.к. получить текущий пароль HTTP авторизации, да еще и куки, довольно проблематично.