PHP Sessions - проверка неявного IP при каждой загрузке страницы - что делать, или альтернативы? - PullRequest
1 голос
/ 13 марта 2011

Прямо сейчас я реализовал это в моей среде разработки:

  • Я сохраняю $ SERVER ['REMOTE_ADDR'] в качестве переменной сеанса при входе в систему, затем перепроверяю страницу при каждой загрузке страницы для того же IP-адреса.

Чем больше я читаю, тем больше мне не нравится эта идея из-за прокси и т. Д. Итак, какие еще варианты могут быть полезны? Я думал о АГЕНТЕ ПОЛЬЗОВАТЕЛЯ - но любой joe-blow может подделать это с помощью простого плагина Firefox. Тем не менее, злоумышленнику, по крайней мере, потребуется удачное предположение, чтобы успешно выбрать правильный с первой попытки ...

Что думают люди? Я хотел бы просто изменить текст: «SERVER_ADDR» на что-то другое - весь другой код может остаться как есть.

Спасибо.

EDIT: Я предполагаю, что моя главная цель здесь состоит в том, чтобы предотвратить угон / фиксацию. Проверка IP теоретически гарантировала бы, что пользователь остается пользователем всегда (ну, если кто-то не подделывает IP-адрес также ...) - но сеанс в основном сохраняется в IP-адрес в этом поместье ...

Ответы [ 2 ]

2 голосов
/ 13 марта 2011

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


Почти забыт.Не забудьте перегенерировать сеанс, который я бы использовал при увеличении привилегий пользователя, например, при входе в систему.Это поможет предотвратить атаки с фиксацией сеанса, когда идентификатор сеанса передается через URL.Помни свой хсс.

1 голос
/ 25 августа 2012

Вы всегда можете сделать маску на IP: 134.23.%.%.

...