Ну, от кого-то, кто потратил половину моего времени, пытаясь предотвратить сессионные угоны, я могу сказать вам, что это неправильный путь.Да, теоретически вы гарантируете, что пользователь такой же, но на практике вы получите ожидаемые «неожиданные» результаты.Некоторые интернет-провайдеры меняют IP-адрес при каждой загрузке страницы.Прокси, такие как tor, тоже так делают.Лучше всего просто использовать пользовательский агент.Хотя это имеет недостатки, вы не можете иметь полностью защищенную систему.Просто убедитесь, что вы запретите xss на своем сайте, и, скорее всего, пользователь не может быть подделан слишком легко.У меня были другие реализации.Первая состояла в том, чтобы взять первую часть IP и хешировать ее с ua, чтобы гарантировать, что IP всегда находится в одном и том же диапазоне, но потом я обнаружил, что диапазоны стран различаются.Другой связан с поиском страны, чтобы гарантировать, что IP принадлежит той же стране, но с другой стороны это включало дополнительный поиск в базе данных.Лучшее, что вы можете сделать, это сделать его сложнее, но он никогда не будет безопасным.
Почти забыт.Не забудьте перегенерировать сеанс, который я бы использовал при увеличении привилегий пользователя, например, при входе в систему.Это поможет предотвратить атаки с фиксацией сеанса, когда идентификатор сеанса передается через URL.Помни свой хсс.