Способы создания уникального отпечатка пользователя в PHP - PullRequest
22 голосов
/ 03 ноября 2010

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

Например:

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

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

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

Ответы [ 5 ]

13 голосов
/ 03 ноября 2010

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

https://panopticlick.eff.org/

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

10 голосов
/ 03 ноября 2010

самый простой и лучший способ: используйте phps session-management - каждому клиенту присваивается идентификатор, который сохраняется в файле cookie (если он включен) или задается как переменная get в каждой ссылке и форме. (в качестве альтернативы вы можете установить cookie самостоятельно). но: это только «отпечатки пальцев» браузера - если пользователь меняет свой браузер, удаляет свои куки или что-то еще, вы больше не сможете его идентифицировать.

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

если вам нужно решение, которым клиент не может манипулировать простым способом, попробуйте выполнить комбинацию следующих действий, используя все, что поддерживается браузером клиентов, и сравнивайте их при каждой загрузке страницы:

  • "нормальные" HTTP-куки
  • Локальные общие объекты (Flash Cookies)
  • Хранение файлов cookie в значениях RGB автоматически сгенерированных PNG с принудительным кэшированием с использованием HTML5-тега Canvas для считывания пикселей (cookie) обратно
  • Хранение файлов cookie и чтение истории веб-поиска
  • Хранение файлов cookie в HTTP ETags
  • Хранилище пользовательских данных Internet Explorer
  • HTML5 Session Storage
  • Локальное хранилище HTML5
  • HTML5 Global Storage
  • Хранение базы данных HTML5 через SQLite

есть решение под названием evercookie , которое реализует все это

3 голосов
/ 12 декабря 2011

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

2 голосов
/ 03 ноября 2010

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

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

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

0 голосов
/ 11 марта 2017

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

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

...