Способы создания уникального отпечатка пальца пользователя в PHP
Каков наилучший способ создания "отпечатка пальца" уникальности пользователя в PHP?
Например:
- Я мог бы использовать IP-адрес пользователя в качестве "отпечатка пальца", однако на одном IP-адресе может быть несколько других пользователей
- Я мог бы использовать IP-адрес пользователя + пользовательский агент в качестве "отпечатка пальца", однако один пользователь мог бы просто переключиться с safari на firefox и снова считаться уникальным
В идеале отпечаток пальца должен обозначать "машину", а не браузер или "ip", но я не могу придумать, как это достижимо.
Открыт для идей/предложений о том, как вы однозначно идентифицируете своих пользователей и какие преимущества/недостатки имеет ваш метод.
5 answers
Этот сайт охватывает практически всю информацию, которую вы можете использовать для различения людей через браузер.
JavaScript, Java и Flash очень помогают.
Самый простой и лучший способ: используйте phps управление сеансами - каждому клиенту присваивается идентификатор, сохраняемый в файле cookie (если он включен) или заданный в качестве переменной get для каждой ссылки и формы. (в качестве альтернативы вы можете установить файл cookie самостоятельно). но: это только "отпечатки пальцев" браузера - если пользователь меняет свой браузер, удаляет свои файлы cookie или что-то еще, вы больше не сможете его идентифицировать.
Идентификация каждого клиента по ip-адресу обычно является плохой идеей и не будет работать. клиенты, использующие один и тот же маршрутизатор, будут иметь одинаковые ip-адреса - клиенты, подключенные через прокси-пул, могут иметь другой ip-адрес при каждой загрузке страницы.
Если вам нужно решение, которым клиент не может легко управлять, попробуйте выполнить комбинацию из следующих действий, используя все, что поддерживается браузером клиентов, и сравните их при каждой загрузке страницы:
- "обычные" HTTP-файлы cookie
- Локальные общие объекты (Флэш-файлы Cookie)
- Хранение файлов cookie в значениях RGB автоматически сгенерированных, принудительно кэшированных PNG-файлов использование тега HTML5 Canvas для считывания пикселей (файлов cookie) обратно
- Хранение файлов cookie и считывание веб-истории
- Хранение файлов cookie в HTTP-тегах
- Хранилище пользовательских данных Internet Explorer
- Хранилище сеансов HTML5
- Локальное хранилище HTML5
- Глобальное хранилище HTML5
- Хранение базы данных HTML5 через SQLite
Существует решение под названием evercookie, которое реализует все это
Достижение 100%-ной надежности не гарантируется, но сочетание некоторых распространенных методов может дать вам значимые результаты
- Пользователи обычно не переключают браузеры. Чрезмерное усложнение вашего алгоритма только для достижения инженерного совершенства не стоит затраченных усилий.
- Вы, безусловно, входите в топ-100 веб-сайтов, если вы можете ожидать нескольких пользователей с одного и того же IP-адреса. Не принимай это на свой счет, но ты просто не настолько популярен.
Выберите самый простой из возможных маршрутов, который может работать и корректироваться с течением времени, если это покажется необходимым.
Есть еще кое-что, что следует учитывать, публичный IP-адрес пользователя - это то, что также может изменяться при каждой загрузке страницы.
Существует множество организаций, которые переключают общедоступные IP-адреса на своих маршрутизаторах для балансировки трафика.
У меня есть три разных компьютера, различные портативные устройства, и на многих из них установлены разные браузеры. Я использую все это взаимозаменяемо дома, беру их с собой в другие места, так что, в основном, на разных IP-адресах. Я пытаюсь подчеркнуть, что снятие отпечатков пальцев с браузера или компьютера, если на то пошло, никогда не будет надежным, если ваша цель - заблокировать человека.
Я рекомендую вам использовать другой подход. Судите, основываясь на неубедительной информации, которую вы имейте в наличии информацию, указывающую на личность вашего запрещенного пользователя (тот же IP-адрес или тот же агент пользователя, если он необычный, или другие методы снятия отпечатков пальцев в браузере javascript, такие как доступные шрифты, доступные плагины, нестандартный размер окна и т. Д.), И требуйте от этих подозрительных посетителей более высокой формы проверки личности - например, oauth с Facebook, Google+ или Twitter. Затем вы можете посмотреть, является ли эта учетная запись в социальных сетях подлинной или создана только для обхода. Есть также API проверки телефона на случай, если ваша база пользователей не разбирается в социальных сетях, и в зависимости от того, насколько ценно для вас, чтобы пользователи не обходили запрет.