В посте #19 описана возможность отключения добавления идентификатора сессии к ссылкам, чтобы он случайно не стал общим достоянием.
В посте #14 обсуждается проверка IP-адреса аутентифицированного пользователя. На мой взгляд, это единственное, что можно проверять.
1) Сервер требует аутентификации и передает клиенту случайно сгенеренную строку. Эту же строку он сохраняет в сессии.
2) Клиент выполняет магические действия с полученной строкой, своим логином, паролем и мало ли еще с чем и отсылает результат на сервер.
3) Сервер делает то же, что только что проделал клиент, но строку он берет из сессии. Потом он сравнивает свой результат с полученным от клиента. Если все Ок, то ставит в сессии галочку, что клиент залогинен.
Если есть возможность использовать HTTPS, то лучше его.