Способы создания уникального отпечатка пальца пользователя в PHP


Каков наилучший способ создания "отпечатка пальца" уникальности пользователя в PHP?

Например:

  1. Я мог бы использовать IP-адрес пользователя в качестве "отпечатка пальца", однако на одном IP-адресе может быть несколько других пользователей
  2. Я мог бы использовать IP-адрес пользователя + пользовательский агент в качестве "отпечатка пальца", однако один пользователь мог бы просто переключиться с safari на firefox и снова считаться уникальным

В идеале отпечаток пальца должен обозначать "машину", а не браузер или "ip", но я не могу придумать, как это достижимо.

Открыт для идей/предложений о том, как вы однозначно идентифицируете своих пользователей и какие преимущества/недостатки имеет ваш метод.

Author: So Over It, 2010-11-03

5 answers

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

Https://panopticlick.eff.org/

JavaScript, Java и Flash очень помогают.

 13
Author: JAL, 2010-11-03 08:39:17

Самый простой и лучший способ: используйте 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, которое реализует все это

 10
Author: oezi, 2010-11-03 08:39:53

Достижение 100%-ной надежности не гарантируется, но сочетание некоторых распространенных методов может дать вам значимые результаты

  • Пользователи обычно не переключают браузеры. Чрезмерное усложнение вашего алгоритма только для достижения инженерного совершенства не стоит затраченных усилий.
  • Вы, безусловно, входите в топ-100 веб-сайтов, если вы можете ожидать нескольких пользователей с одного и того же IP-адреса. Не принимай это на свой счет, но ты просто не настолько популярен.

Выберите самый простой из возможных маршрутов, который может работать и корректироваться с течением времени, если это покажется необходимым.

 3
Author: pestaa, 2010-11-03 08:39:58

Есть еще кое-что, что следует учитывать, публичный IP-адрес пользователя - это то, что также может изменяться при каждой загрузке страницы.
Существует множество организаций, которые переключают общедоступные IP-адреса на своих маршрутизаторах для балансировки трафика.

 3
Author: jmserra, 2011-12-12 16:27:45

У меня есть три разных компьютера, различные портативные устройства, и на многих из них установлены разные браузеры. Я использую все это взаимозаменяемо дома, беру их с собой в другие места, так что, в основном, на разных IP-адресах. Я пытаюсь подчеркнуть, что снятие отпечатков пальцев с браузера или компьютера, если на то пошло, никогда не будет надежным, если ваша цель - заблокировать человека.

Я рекомендую вам использовать другой подход. Судите, основываясь на неубедительной информации, которую вы имейте в наличии информацию, указывающую на личность вашего запрещенного пользователя (тот же IP-адрес или тот же агент пользователя, если он необычный, или другие методы снятия отпечатков пальцев в браузере javascript, такие как доступные шрифты, доступные плагины, нестандартный размер окна и т. Д.), И требуйте от этих подозрительных посетителей более высокой формы проверки личности - например, oauth с Facebook, Google+ или Twitter. Затем вы можете посмотреть, является ли эта учетная запись в социальных сетях подлинной или создана только для обхода. Есть также API проверки телефона на случай, если ваша база пользователей не разбирается в социальных сетях, и в зависимости от того, насколько ценно для вас, чтобы пользователи не обходили запрет.

 0
Author: Thoracius Appotite, 2017-03-11 12:00:32