Распознать пользователя сайта без авторизации?

Я хотел бы создать фрагмент кода, который можно встроить на множество разных веб-сайтов (виджет).

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

Мне не нужно (и я не должен иметь возможности) получать какую-либо информацию об этом пользователе, просто идентифицируйте его.

Веб-сайты будут разнородными; нет никакой гарантии, что они будут иметь какие-либо общие аспекты, поэтому код виджета должен быть полностью автономным.


person Laizer    schedule 04.02.2010    source источник
comment
Этот вопрос связан с пользовательским опытом — необходимость входа в систему раздражает. Тем не менее, здесь явно есть этические проблемы. Очень может быть, что любое отслеживание личности без явного согласия начинает переходить в серую (темно-серую?) зону.   -  person Laizer    schedule 05.02.2010
comment
Я полагаю, следующий вопрос: что вы делаете, что требует входа в систему? Какие функции вы пытаетесь предложить на сторонней странице, которые вы не можете предложить без входа пользователя в систему?   -  person Ian Boyd    schedule 06.02.2010


Ответы (5)


То, что вы хотите сделать, это то, для чего были изобретены файлы cookie. Но браузеры научились отслеживать людей без их разрешения и теперь ограничивают сторонние файлы cookie.

Фонд Electronic Frontier Foundation недавно представил доказательство концепции уникальной идентификации посетителя на основе атрибутов его браузера. Он использует такие вещи, как:

  • User-Agent строка
  • http-accept значений
  • часовой пояс
  • разрешение экрана и глубина цвета
  • установленные плагины
  • если куки включены

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

person Ian Boyd    schedule 05.02.2010
comment
Да, но вы не можете получить доступ к файлам cookie между доменами. - person Byron Whitlock; 05.02.2010
comment
@Byron: это то, что я имел в виду под браузерами ... теперь ограничьте сторонние файлы cookie - person Ian Boyd; 05.02.2010
comment
В моей компании все 15000 сотрудников используют один и тот же браузер без возможности настройки, и все используют один и тот же прокси-сервер для доступа в Интернет. - person tovare; 05.02.2010
comment
@tovare: все равно проверь. Мой iPod Touch уникален, и ничто в нем не выглядит особенно уникальным. Попробуйте два компьютера и посмотрите, говорит ли он, что браузер уникален. - person Ian Boyd; 06.02.2010

OpenID — это своего рода SSO для всего Интернета, но им все равно нужно входить в OpenID. Кроме этого, я не могу придумать решение.

person bkritzer    schedule 04.02.2010
comment
Я стараюсь избегать любого входа в систему. Тем не менее, я присматриваю за OpenID. Я не видел, чтобы это работало хорошо для чего-либо, кроме технических сайтов. В мейнстрим еще не попал. Вероятно, сбивает с толку большинство пользователей, ИМХО. - person Laizer; 05.02.2010

Я бы предложил Open-ID, а не какой-то обходной путь, подобный этому, но если вам не нравится это решение, вы можете рассмотреть что-то вроде этого:

Вы можете использовать файл cookie из одного домена, а затем использовать этот домен для перенаправления на правильный сайт, добавив идентификатор пользователя в качестве параметра или части URL-пути.

Например, ссылка для добавления личного виджета на сайт foo.com может выглядеть примерно так:

http://bar.com/addwidget1?backtoo=http://foo.com/main/

bar.com будет владельцем файла cookie, изменит пользовательские настройки, а затем добавит идентификатор пользователя к обратной ссылке перед перенаправлением:

foo.com/user-id/

Проблемы с этим подходом включают

  • Вам нужно динамически переписывать каждую страницу с идентификатором пользователя.
  • Это немного неуклюже, я думаю
  • Вы не можете в полной мере использовать веб-кеши в сети.
  • Пользователь может потерять свой файл cookie.

Преимущества

  • Нет входа
  • Поскольку вы много перенаправляете, вы получаете статистику о перемещении пользователей по вашим сайтам.
person tovare    schedule 05.02.2010

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

РЕДАКТИРОВАТЬ

Так что думайте об этом больше и читайте ответ Товаре и ваши комментарии. Почему бы не создать какой-нибудь код javascript, который работает как реклама Google? Вы помещаете javascript на страницу, и он отправляет запрос на ваш центральный сервер отслеживания, используя динамический iframe.

Попросите ваш сервер отслеживания вернуть тег изображения с встроенным src уникального идентификатора (его собственного идентификатора сеанса). <img src=contentserver.com/track.php?id=12345668>

Сервер содержимого имеет сценарий на стороне сервера (track.php выше), который сопоставляет свой локальный идентификатор сеанса с уникальным идентификатором, полученным от сервера отслеживания.

Уникальный идентификатор остается одинаковым на всех сайтах.

Редактировать2

Вместо того, чтобы использовать изображение, используйте трюк с javascript. Сервер содержимого просто запрашивает файл javascript с сервера отслеживания. но файл динамический, сгенерированный на стороне сервера. он возвращает сгенерированную функцию javascript с именем unique_id(), он возвращает уникальный идентификатор с сервера отслеживания. Вызовите track.php с помощью ajax, чтобы определить, является ли это уникальным пользователем.

person Byron Whitlock    schedule 04.02.2010
comment
Возможно, в конечном итоге мне придется пойти по этому пути, но мне особенно интересно узнать, смогу ли я когда-нибудь избежать их регистрации. Возможно, автостоп на существующих системах (Google? Facebook?) - person Laizer; 05.02.2010
comment
Никакая существующая система без ужасных недостатков безопасности не позволит вам сделать это. Если вы найдете способ сделать это, вы должны ожидать, что метод, который вы использовали, будет устранен, как только они узнают об этом. - person Wooble; 05.02.2010
comment
@Laizer Wooble прав. Любые существующие сайты, которые позволили бы вам сделать это, ужасно сломаны. Хотели бы вы, чтобы любой случайный сайт знал ваш идентификатор Google? - person Byron Whitlock; 05.02.2010
comment
Возможно, я здесь лукавлю, но меня не интересует фактическое удостоверение личности или что-то еще о человеке — я просто надежно и однозначно идентифицирую его. - person Laizer; 05.02.2010

Используйте OpenID или его упрощенный вариант с вашим собственным сайтом в качестве поставщика удостоверений. Перенаправьте пользователя на сайт вашего идентификатора, который устанавливает или проверяет файл cookie, а затем перенаправляет пользователя обратно с идентификатором пользователя, который был указан файлом cookie, добавленным в качестве аргумента URL.

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

Facebook предлагает нечто подобное; сайт может найти личность пользователя Facebook (при условии, что у пользователя она есть) без каких-либо действий со стороны пользователя.

person Karl Anderson    schedule 06.02.2010