Может ли сайт идентифицировать компьютер
Третьего ноября этого года в Sysinternals был закрыт проект по развитию
NewSID – утилиты, позволяющей менять идентификатор защиты компьютера
(machine SID). Я написал NewSID (тогда она называлась NTSID) в 1997 году,
поскольку на тот момент единственной программой, позволявшей менять SID, была
утилита от Microsoft под названием
Sysprep, которая не поддерживала смену идентификаторов защиты на тех
машинах, на которых уже были установлены приложения.
Идентификатор защиты компьютера – это уникальный идентификатор, генерируемый
программой установки Windows Setup, который Windows использует как основной
идентификатор безопасности для определяемых администратором локальных аккаунтов
и групп. После того, как пользователь авторизуется в системе, он представляется
ей своими идентификаторами SID пользователя и группы в соответствии с
авторизацией объекта (проверками прав доступа). И если две машины могут иметь
одинаковый идентификатор защиты, то и аккаунты с группами на них могут также
иметь одинаковые идентификаторы. Кажется очевидным, что наличие нескольких
компьютеров с одинаковыми SID в пределах одной сети небезопасно, не правда ли?
По крайней мере, так принято было думать.
Причиной, по которой я начал рассматривать возможность отправки NewSID на
покой, были отзывы пользователей. Хотя в целом применение утилиты на Windows
Vista было успешным, некоторые пользователи сообщали об ошибках в работе
компонентов системы после использования NewSID. К тому же, сам я не проводил ее
полного тестирования. Когда я принялся за изучение отзывов, я сделал шаг назад,
чтобы понять, как дублированные SID могут становиться причинами проблем,
поскольку раньше я принимал возможность этого на веру, как и все остальные. И
чем больше я об этом думал, тем крепче была моя убежденность, что дублирование
сертификатов безопасности, то есть наличие множества компьютеров с одинаковыми
SID, само по себе не может быть причиной для возникновения проблем с
безопасностью или чем-нибудь еще. Я поделился своими мыслями с командами
разработчиков Windows, занимающимися безопасностью и развертыванием систем, и
там никто не смог придумать такую последовательность действий, при которой две
системы с одинаковыми SID, работающие в пределах рабочей группы или домена,
могли бы стать причиной ошибки. С этого момента решение закрыть NewSID стало
очевидным.
Я понимаю, что новость о том, что в наличии дублированных SID нет ничего
страшного, станет для многих неожиданностью, особенно если учесть, что практика
смены идентификаторов безопасности при развертывании систем из образов
применяется еще со времен Windows NT. Эта статья разоблачает миф об опасности
дублирования SID, и чтобы его развеять, я сначала объясню, что же такое
идентификаторы безопасности компьютера и как они используются Windows, после
чего продемонстрирую, что за одним исключением, Windows никогда не показывает
идентификаторы безопасности вне компьютера, а потому иметь машины с одинаковыми
SID абсолютно нормально.
Где я могу хранить свои данные сеанса?
Вы можете сохранить данные сеанса в базе данных вашего веб-сайта или на компьютере пользователя. Поскольку я обычно работаю на небольших сайтах (пусть более 10 тысяч непрерывных подключений), которые используют сторонние приложения (Google Analytics/Clicky/etc), лучше всего хранить данные на клиентском компьютере. Это имеет следующие преимущества:
- Нет поиска в базе данных/накладные расходы/загрузка/задержка/пробел/т.д.
- Пользователь может удалить свои данные в любое время без необходимости писать мне раздражающие электронные письма.
- Данные должны быть зашифрованы/расшифрованы и подписаны/проверены, что создает накладные расходы процессора на клиенте (не так уж плохо) и на сервере (ба!).
- Данные удаляются, когда пользователь удаляет свои куки и кеш. (это то, что я действительно хочу)
- Данные недоступны для аналитики, когда пользователи выходят в автономный режим. (аналитика только для пользователей, просматривающих в настоящее время)
UUIDs
Юридическая
Чтобы использовать идентификаторы отслеживания, вам необходимо добавить их как в свою политику конфиденциальности, так и в условия использования, предпочтительно в разделе Отслеживание. Мы будем использовать следующие клавиши на document.cookie и window.localStorage :
- _ga: данные Google Analytics
- __utma: файл cookie для отслеживания Google Analytics
- sid: SessionID
Убедитесь, что вы включили ссылки на свою Политику конфиденциальности и условия использования на всех страницах, которые используют отслеживание.
ОТВЕТЫ
Ответ 1
Эти люди разработали метод снятия отпечатков пальцев для распознавания пользователя с высоким уровнем точности:
Мы исследуем степень, в которой современные веб-браузеры подлежат "дактилоскопии" устройства через информацию о версии и конфигурации, которую они передают веб-сайтам по запросу. Мы реализовал один возможный алгоритм дактилоскопии и собрал эти отпечатки пальцев с большой выборки браузеров, посетивших наш тестовый сайт, panopticlick.eff.org. Мы видим, что распределение нашего finger- print содержит не менее 18,1 бит энтропии, что означает, что если мы выберем браузер наугад, в лучшем случае мы ожидаем, что только один из 286 777 других браузеры поделятся своим отпечатком. Среди браузеров, которые поддерживают Flash или Java, ситуация хуже, со средним браузером, несущим по крайней мере 18,8 бит идентифицирующей информации. 94,2% браузеров с Flash или Java были уникальными в нашем образце.
Наблюдая за постоянными посетителями, мы оцениваем, насколько быстро со временем могут изменяться отпечатки браузера. В нашем образце отпечатки пальцев изменились довольно быстро, но даже простая эвристика обычно могла угадать, когда fingerprint был "обновленной" версией ранее наблюдаемых браузеров fingerprint, с 99,1% правильных догадок и ложным положительным показателем только 0,86%.
Мы обсуждаем, что представляет собой на практике идентификация отпечатков пальцев в браузере, и какие контрмеры могут быть уместными, чтобы предотвратить это. Существует компромисс между защитой от отпечатков пальцев и некоторыми видами возможность отладки, которая в современных браузерах сильно зависит от конфиденциальности. Как ни парадоксально, технологии защиты от отпечатков пальцев могут быть self- победить, если они не используются достаточным количеством людей; мы показываем что некоторые меры конфиденциальности в настоящее время становятся жертвами этого парадокса, но другие не.
Ответ 2
Я не знаю, есть ли или когда-нибудь найдется способ уникальной идентификации машин с помощью одного браузера. Основные причины:
- Вам нужно будет сохранить данные на компьютере пользователя. Эти данные могут быть удаляется пользователем в любое время. Если у вас нет способа воссоздать это данные, которые являются уникальными для каждой машины, то застряли.
- Проверка. Вы должны защититься от подмены, перехвата сеанса и т.д.
Даже если есть способы отследить компьютер без использования файлов cookie, всегда найдется способ обойти его и программное обеспечение, которое сделает это автоматически. Если вам действительно нужно что-то отслеживать на компьютере, вам нужно написать собственное приложение (Apple Store/Android Store/Windows Program/etc).
Возможно, я не смогу дать вам ответ на заданный вами вопрос, но я покажу вам, как реализовать отслеживание сеансов. С помощью отслеживания сеанса вы пытаетесь отслеживать сеанс просмотра, а не компьютер, посещающий ваш сайт. Отслеживая сеанс, ваша схема базы данных будет выглядеть следующим образом:
Преимущества отслеживания на основе сеанса:
Недостатки отслеживания на основе сеансов:
- Сессии основаны на браузере, а не на компьютере. Если пользователь использует 2 разных браузера, это приведет к 2 разным сеансам. Если это проблема, вы можете перестать читать здесь.
- Сессии истекают, если пользователь не вошел в систему. Если пользователь не вошел в систему, то он будет использовать гостевой сеанс, который будет признан недействительным, если пользователь удалит файлы cookie и кэш браузера.
РеализацияЕсть много способов реализации этого. Я не думаю, что смогу охватить их все, я просто перечислю свою любимую, что сделало бы этот самоуверенный ответ. Имейте это в виду.
Идентификаторы безопасности (SID)
Увидеть, что собой представляет SID машины можно, если воспользоваться
утилитой
PsGetSid, запущенной через командную строку без параметров:
В этом SID номер версии равен 1, код агента идентификатора - 5, а далее идут
коды четырех субагентов. Одно время в Windows NT идентификатор SID мог
использоваться для идентификации компьютера в сети, поэтому для обеспечения
уникальности при генерировании SID в Windows Setup он содержит один
фиксированный (21) и три генерируемых случайным образом (числа после "S-1-5-21")
кода субагентов.
Еще перед тем, как вы создадите первую учетную запись в системе, Windows
определяет несколько встроенных пользователей и групп, включая учетные записи
"Администратор" и "Гость". Вместо того, чтобы генерировать новые случайные
идентификаторы SID для этих учетных записей, Windows обеспечивает их
непохожесть, просто добавляя в SID уникальные для каждой учетной записи числа,
называемые относительными идентификаторами (Relative Identifier, RID). Для
упомянутых выше встроенных учетных записей RID определены заранее, поэтому у
пользователя "Администратор" RID всегда равен 500:
После установки системы Windows назначает новым локальным учетным записям
пользователей и групп номера RID, начинающиеся со значения 1000. Чтобы увидеть
имя учетной записи, которой принадлежит указанный SID, можно воспользоваться
PsGetSid. Пример внизу демонстрирует, что локальный SID с параметром RID, равным
1000, принадлежит учетной записи Abby - аккаунту администратора, имя которого
система обязала меня ввести во время установки:
Плюс к этим динамически создаваемым SID, система определяет несколько
аккаунтов, которые также всегда имеют предопределенные значения SID. Один из
примеров – группа Everyone, SID которой в каждой системе Windows имеет значение
S-1-1-0:
Другой пример - учетная запись Local System, под которой выполняются
некоторые системные процессы, такие как Session Manager (Smss.exe), Service
Control Manager (Services.exe) и Winlogon (Winlogon.exe):
Новая лучшая политика
Удивительно, что дублирование SID так долго считалось не подлежащей
обсуждению проблемой лишь потому, что все думали, что кому-то об этом точно
известно. К моему сожалению, на самом деле NewSID никогда не была по-настоящему
полезной утилитой, и скучать по ней теперь нет никакого смысла. Официальная
политика Microsoft по данному вопросу тоже изменится, поэтому можно рассчитывать
на то, что в будущих версиях Sysprep этап генерации SID будет пропущен.
Мне нужно выяснить способ уникальной идентификации каждого компьютера, который посещает веб-сайт, который я создаю. Есть ли у кого-нибудь советы о том, как этого достичь?
Поскольку я хочу, чтобы решение работало на всех машинах и во всех браузерах (в разумных пределах), я пытаюсь создать решение с помощью javascript.
Я ценю помощь. Спасибо.
Cookies не будут работать.
Мне нужна возможность в основном создать руководство, которое уникально для компьютера и повторяемо, если не произойдет никаких изменений аппаратного обеспечения с компьютером. Направления, о которых я думаю, получают MAC-адрес сетевой карты и другую информацию такого характера, которая будет определять машину, посетив веб-сайт.
Проверка
Предположим, Haxor X крадет файлы cookie наших клиентов, пока они еще вошли в систему. Как мы защищаем их? Криптография и браузер снимают отпечатки пальцев на помощь. Помните, что наше первоначальное определение для SessionID было:
Мы можем изменить это на:
Где hk = sign(Timestamp|BrowserID|ComputerID, serverKey) .
Теперь мы можем проверить наш SessionID , используя следующий алгоритм:
Теперь, чтобы атака Хаксора сработала, они должны:
Мы можем улучшить проверку, перенаправив GoogleID и FingerprintID (через ajax или скрытые поля) и сопоставив их.
Ответ 3
Невозможно идентифицировать компьютеры, обращающиеся к веб-сайту, без сотрудничества со своими владельцами. Однако, если вы позволите, вы можете сохранить файл cookie, чтобы идентифицировать машину, когда он снова посещает ваш сайт. Ключ в том, что посетитель находится под контролем; они могут удалить cookie и появиться в качестве нового посетителя в любое время.
Ответ 4
- Вездесущая доступность (95% посетителей, вероятно, будут иметь флеш)
- Вы можете хранить больше данных на файл cookie (до 100 КБ).
- Общие для браузеров, поэтому более вероятно уникальная идентификация машины.
- Очистка куки файлов браузера не удаляет флеш файлы.
Вам нужно будет создать небольшой (скрытый) флеш-фильм для чтения и записи.
Какой бы маршрут вы ни выбрали, убедитесь, что ваши пользователи выбирают IN для отслеживания, иначе вы вторгаетесь в их личную жизнь и становитесь одним из плохих парней.
Ответ 5
Надеюсь, что это поможет!
Ответ 6
Существует популярный метод, называемый отпечатком на холсте, описанным в этой научной статье: Веб никогда не забывает: Механизмы постоянного отслеживания в дикой природе. Когда вы начнете искать его, вы будете удивлены, как часто он используется. Этот метод создает уникальный отпечаток пальца, который согласован для каждой комбинации браузера/оборудования.
Подробнее о снятии отпечатков пальцев здесь:
Ответ 7
IP. Но, как говорили другие, это не исправлено для многих, если не для большинства пользователей Интернета, из-за их политик динамического размещения ISP.
Useragent String - почти все браузеры отправляют какой браузер они с каждым запросом. Однако это может быть установлено пользователем во многих браузерах сегодня.
Сбор полей запроса. С каждым запросом отправляются другие поля, такие как поддерживаемые кодировки и т.д. Они, если они используются в агрегате, могут помочь идентифицировать пользовательский компьютер, но снова зависят от браузера и могут быть изменилось.
Cookies. Настройка cookie - это еще один способ определить машину или, более конкретно, браузер на машине, но, как говорили другие, они могут быть удалены или отключены пользователями и применимы только к ним. в браузере, а не в машине.
Ответ 8
Существуют недостатки как с подписями cookie, так и с не-cookie. Но если вы можете простить недостатки подхода печенья, вот идея.
Если вы уже используете Google Analytics на своем сайте, вам не нужно писать код для самостоятельного отслеживания уникальных пользователей. Google Analytics делает это для вас через значение cookie __utma , как описано в документации Google. И повторно используя это значение, вы не создаете дополнительную полезную нагрузку cookie, которая имеет преимущества эффективности при запросах страниц.
И вы могли бы написать код достаточно легко, чтобы получить доступ к этому значению, или использовать эту функцию script getUniqueId() .
Ответ 9
Как и в предыдущих решениях, cookie файлы являются хорошим методом, имейте в виду, что они идентифицируют браузеры. Если бы я посетил веб-сайт в Firefox, а затем в Internet Explorer файлы cookie будут храниться для обеих попыток отдельно. Некоторые пользователи также отключают файлы cookie (но больше людей отключает JavaScript).
Другим методом рассмотрения будет I.P. и идентификация имени хоста (помните, что они могут различаться для пользователей удаленного доступа/нестатического IP-адреса, AOL также использует защищенные IP-адреса). Однако, поскольку это только идентифицирует сети, это может не работать, а также файлы cookie.
Ответ 10
Ответ 11
Когда я использую машину, которая никогда не посещала мой веб-сайт онлайн-банкинга, меня спрашивают о дополнительной аутентификации. то, если я вернусь второй раз на сайт онлайн-банкинга, я не получаю дополнительную аутентификацию. я удалил все файлы cookie в IE и перешел на мой сайт онлайн-банкинга, полностью ожидая, что вас снова зададут вопросы аутентификации. к моему удивлению, я не спросил. разве это не привело к тому, что банк верит, что банк делает какую-то маркировку ПК, которая не включает файлы cookie?
Это довольно распространенный тип аутентификации, используемый банками.
Итак, чтобы суммировать то, что идентифицирует банк, является вашим интернет-провайдером и/или netblock на основе вашего IP-адреса. Очевидно, что не каждый пользователь вашего интернет-провайдера - это вы, поэтому банк все еще спрашивает вас о вашем пароле.
Были ли у вас когда-либо кредитные карты, чтобы проверить, что все в порядке, когда вы используете кредитную карту в другой стране? Та же концепция.
Ответ 12
Действительно, то, что вы хотите сделать, не может быть сделано, потому что протоколы этого не позволяют. Если статические IP-адреса были универсально использованы, вы могли бы это сделать. Их нет, поэтому вы не можете.
Если вы действительно хотите идентифицировать людей, им нужно войти в систему.
Поскольку они, вероятно, будут перемещаться по разным страницам на вашем веб-сайте, вам нужен способ отслеживать их по мере их перемещения.
Пока они вошли в систему, и вы отслеживаете их сеанс на своем сайте с помощью файлов cookie/link-parameters/beacons/whatever, вы можете быть уверены, что они используют тот же компьютер в течение этого времени.
В конечном счете, неверно сказать, что это говорит вам, какой компьютер они используют, если ваши пользователи не используют вашу собственную локальную сеть и не имеют статических IP-адресов.
Если то, что вы хотите сделать, выполняется в сотрудничестве с пользователями, и для каждого файла cookie есть только один пользователь, и они используют один веб-браузер, просто используйте cookie.
Ответ 13
Файлы cookie не будут полезны для определения уникальных посетителей. Пользователь может очистить файлы cookie и обновить сайт. Затем он снова будет классифицирован как новый пользователь.
Я думаю, что лучший способ сделать это - реализовать решение на стороне сервера (так как вам нужно где-то хранить ваши данные). В зависимости от сложности ваших потребностей для таких данных вам нужно будет определить, что классифицируется как уникальный визит. Разумным методом было бы позволить IP-адресу вернуться на следующий день и получить уникальный визит. Несколько посещений с одного IP-адреса за один день не должны считаться уникальными.
Используя PHP, например, тривиально получить IP-адрес посетителя и сохранить его в текстовом файле (или базе данных SQL).
Решение на стороне сервера будет работать на всех машинах, потому что вы собираетесь отслеживать пользователя, когда он сначала загружает ваш сайт. Не используйте javascript, поскольку это предназначено для сценариев на стороне клиента, плюс пользователь может отключить его в любом случае.
Надеюсь, что это поможет.
Ответ 14
Поскольку я хочу, чтобы решение работало на всех машинах и во всех браузерах (в разумных пределах), я пытаюсь создать решение с помощью javascript.
Разве это не очень хорошая причина не использовать javascript?
Как говорили другие - файлы cookie, вероятно, являются вашим лучшим вариантом - просто имейте в виду ограничения.
Ответ 15
Я предполагаю, что вердикт - я не могу программно однозначно идентифицировать компьютер, который посещает мой веб-сайт.
У меня есть следующий вопрос. Когда я использую машину, которая никогда не посещала мой веб-сайт онлайн-банкинга, меня спрашивают о дополнительной аутентификации. то, если я вернусь во второй раз на сайт онлайн-банкинга, я не получаю дополнительную аутентификацию. прочитав ответы на мой вопрос, я решил, что это должен быть куки файл. поэтому я удалил все куки в IE и перешел на мой сайт онлайн-банкинга, полностью ожидая, что вас снова зададут вопросы аутентификации. к моему удивлению, я не спросил. разве это не привело к тому, что банк верит, что банк делает какую-то маркировку ПК, которая не включает файлы cookie?
Я ценю всю полезную информацию, если вы могли бы уточнить эту противоречивую информацию, которую я нашел, я был бы очень благодарен ей.
Ответ 16
Я бы сделал это, используя комбинацию файлов cookie и флеш файлов. Создайте GUID и сохраните его в файле cookie. Если файл cookie не существует, попробуйте прочитать его из файла cookie. Если он еще не найден, создайте его и напишите в файл cookie. Таким образом, вы можете использовать один и тот же идентификатор GUID в браузерах.
Ответ 17
Вы можете использовать fingerprintjs2
После этого вы можете проверить всех своих пользователей на соответствие существующим и проверить сходство JSON, поэтому даже если их отпечатки пальцев видоизменяются, вы все равно можете отслеживать их
Ответ 18
Я думаю, что файлы cookie могут быть тем, что вы ищете; это то, как большинство сайтов уникально идентифицируют посетителей.
Ответ 19
Предполагая, что вы не хотите, чтобы пользователь находился под контролем, вы не можете. Веб не работает так, лучшее, на что вы можете надеяться, - это некоторые эвристики.
Если вы можете заставить своего посетителя установить какое-то программное обеспечение и использовать TCPA, вы можете что-то отключить.
Ответ 20
Я где-то читал, что они хранят идентификатор ЦП. Хотя я не мог найти, как они это делают, я серьезно сомневаюсь в этом, и они могут использовать MAC-адрес для этого.
Я определенно делюсь, если найду, как это сделать.
Ответ 21
Трюк:
Создайте 2 страницы регистрации:
Первая страница регистрации: без электронной почты или проверки безопасности (только с именем пользователя и паролем)
Вторая страница регистрации: с высоким уровнем безопасности (запрос проверки электронной почты и изображение безопасности и т.д.)
Для удобства клиентов и простой регистрации по умолчанию страница регистрации должна быть (первая страница регистрации), но в (Первая страница регистрации) существует скрытое ограничение. Это IP Ограничение. Если IP попытался зарегистрироваться во второй раз (например, менее 1 часа) вместо показывая страницу блока. вы можете показать (вторая страница регистрации) автоматически.
Обратите внимание: (первая страница регистрации) и (вторая страница регистрации) не должны находиться на отдельных страницах. вы делаете только 1 страницу. (например: register.php) и сделать его умным для переключения между First PHP Style и Second PHP Style
Если у вас возник такой вопрос, готов сразу ответить. В общем, да. Может ли веб-сайт видеть, какое устройство я использую? Ваш браузер отправляет так называемую строку user-agent — строку символов, которая сообщает веб-сайту множество вещей. Например, какой браузер вы используете и какая операционная система работает на вашем устройстве.
Для пользователей: Содержимое строки агента пользователя можно просмотреть на некоторых веб-сайтах. Например в разделе агент пользователя. Из того, что я помню, использование Safari на устройствах iOS (iPhone, iPad) будет только идентифицировать браузер как Safari. Но не будет раскрывать модель (iPhone 6 Plus против iPad Air).
Я не помню, определяет ли Safari разницу между устройствами iOS и компьютерами Mac. Может ли веб-сайт видеть, какое устройство я использую — веб-сайт может определить, какое устройство вы используете, путем получения размеров экрана. И затем сравнения его с базой.
Для владельце веб сайтов: Если у вас есть веб сайт, и вы не видите кто к вам заходит. А просто получаете информацию о количестве переходов от счетчика, то сайт нужно доработать. Сильно подробно я в этой статье углубляться не буду. Я просто скажу что есть множество плагинов для вордрпесс, которые дают вам этот функционал. Так же можно обратиться в соответствующую компанию, где вам подробно об этом расскажут и помогут доработать сайт.
Основы
Я буду отслеживать сессию, используя так называемый файл cookie навсегда. Это данные, которые автоматически воссоздают себя, даже если пользователь удаляет свои куки или обновляет свой браузер. Тем не менее, пользователь не сможет удалить свои куки и кеш просмотра.
Для реализации этого я буду использовать механизм кэширования браузеров (RFC), API WebStorage (MDN) и файлы cookie браузера (RFC, Google Analytics).
22 ответа
Эти люди разработали метод снятия отпечатков пальцев для распознавания пользователя с высоким уровнем точности:
Я разработчик, я пришел сюда, чтобы найти быстрое решение или небольшой фрагмент кода. В этом документе не показано, как это реализовать. Я хочу знать, как мне реализовать это, чтобы я мог отслеживать уникальных пользователей моего сайта.
Ты прав. Это не дает вам ответ на тарелке. Это требует дальнейшего чтения, понимания всех связанных с этим проблем и того, почему простой фрагмент кода вряд ли когда-либо полностью заработает. Предприимчивый разработчик может написать библиотеку, которая сделает всю тяжелую работу и позволит людям, ищущим «быстрое решение», извлечь выгоду в будущем.
Ответ также только для ссылок. Краткое изложение методов, описанных в PDF-файле, будет полезно, если PDF-файл станет недоступен.
Невозможно идентифицировать компьютеры, обращающиеся к веб-сайту, без сотрудничества с их владельцами. Однако, если они позволят вам, вы можете сохранить файл cookie, чтобы идентифицировать машину, когда она снова посещает ваш сайт. Суть в том, что посетитель все контролирует; они могут удалить куки и появиться как новый посетитель в любое время.
Если он посещает ваш сайт с помощью 3 разных браузеров, то у него будет 3 разных файла cookie, поскольку файлы cookie не распределяются между приложениями. Кроме того, если он использует DHCP, а не статический IP-адрес, у него, вероятно, не будет долго одного и того же IP-адреса для его компьютера.
И да и нет. Снятие отпечатков пальцев браузера идентифицирует профиль браузера с высокой степенью вероятности, но это не абсолютная однозначная идентификация, которую ищут в этом вопросе. Это также довольно просто (но, возможно, легко) для опытного пользователя намеренно обойти, если он того пожелает.
- Повсеместная доступность (вероятно, у 95% посетителей будет flash)
- Вы можете хранить больше данных в одном файле cookie (до 100 КБ)
- Совместно используется во всех браузерах, поэтому с большей вероятностью однозначно идентифицирует машину
- Очистка файлов cookie браузера не удаляет флеш-куки.
Вам нужно будет создать небольшой (скрытый) флэш-ролик, чтобы читать и писать их.
Какой бы маршрут вы ни выбрали, убедитесь, что ваши пользователи соглашаются на отслеживание, иначе вы вторгнетесь в их конфиденциальность и станете одним из плохих парней.
Многие пользователи используют Flashblock. Вспышка активируется у пользователя одним щелчком мыши, если он хочет ее увидеть.
Я думаю, что это одно из лучших решений. Youtube, Google и другие используют LSO для борьбы со злоупотреблениями.
Ситуация изменилась за последние девять лет. В настоящее время 95 процентов пользователей даже не используют настольные компьютеры, а мобильные устройства никогда не использовали Adobe Flash Player.
Надеюсь, это поможет!
+ 1 - Брайан - Отличная информация! Все это оказалось очень полезным. Спасибо. Добавьте больше информации, если с тех пор вы ничего не узнали.
Пробовал пробную страницу с приватным режимом iOS Safari и десктопным Chrome в режиме инкогнито, файл cookie не может быть получен после перезапуска браузера.
IP - но, как уже говорили другие, это не исправлено для многих, если не для большинства пользователей Интернета, из-за политики динамического распределения их интернет-провайдера.
Useragent String — почти все браузеры отправляют информацию о том, какой они браузер, с каждым запросом. Однако сегодня это может быть установлено пользователем во многих браузерах.
Коллекция полей запроса. С каждым запросом отправляются другие поля, такие как поддерживаемые кодировки и т. д. Если они используются в совокупности, они могут помочь идентифицировать компьютер пользователя, но опять же зависят от браузера и могут быть изменены.
Файлы cookie. Установка файлов cookie — это еще один способ идентифицировать машину или, точнее, браузер на машине, но, как говорили другие, они могут быть удалены или отключены пользователями и применимы только к браузеру, а не к машина.
Существуют недостатки как в подходах с использованием файлов cookie, так и без них. Но если вы можете простить недостатки подхода с использованием файлов cookie, вот идея.
Если вы уже используете Google Analytics на своем сайте, вам не нужно самостоятельно писать код для отслеживания уникальных пользователей. Google Analytics делает это за вас с помощью значения файла cookie __utma , как описано в документации Google. И, повторно используя это значение, вы не создаете дополнительную полезную нагрузку cookie, что повышает эффективность запросов страниц.
И вы могли бы достаточно просто написать код, чтобы получить доступ к этому значению, или использовать этот скрипт getUniqueId() функция.
Получу ли я один и тот же идентификатор, используя getUniqueId() в разных браузерах на одном компьютере?
Я знаю, что в stackoverflow есть ряд похожих вопросов, таких как следующие:
. и многие другие, и я изучил их все.
Обновление:
Приносим извинения за возникновение путаницы и ложную тревогу. Мы обнаружили некоторую некорректность в нашем методе получения информации об HW. В первую очередь я подумал об удалении этого вопроса, так как теперь моя собственная путаница исчезла, и я действительно считаю, что комбинация двух или более компонентов достаточно хороша для идентификации компьютера. Однако затем я решил сохранить это, потому что я думаю, что должен уточнить, что было причиной проблемы, поскольку то же самое может повредить другому парню в будущем.
Вот что мы делали (исключая другие коды):
Мы использовали функцию getManagementInfo для получения MAC и идентификатора процессора.
Затем при необходимости мы использовали эту функцию для получения MAC-адреса.
И получить ProcessorID
На этом этапе strMAC будет содержать более одного MAC-адреса, если их больше одного. Чтобы взять только один, мы просто взяли первые 17 символов (12 цифр MAC и 5 двоеточий между ними).
Вот где мы допустили ошибку. Поскольку getManagementInfo("Win32_NetworkAdapterConfiguration", "MacAddress") возвращал несколько дополнительных MAC-адресов, которые действительно использовались. Например, когда мы искали MAC-адреса в командной строке с помощью команды getmac , она показывала один или два MAC-адреса для каждого компьютера, которые все были разными. Но getManagementInfo("Win32_NetworkAdapterConfiguration", "MacAddress") вернул от четырех до пяти MAC-адресов, некоторые из которых были идентичны для всех компьютеров. Поскольку мы просто взяли первый MAC-адрес, который вернула наша функция, вместо проверки чего-либо еще, идентичные MAC-адреса были взяты случайно в strMAC .
Однако я был абсолютно прав насчет идентичной проблемы с идентификатором процессора. Все трое вернули один и тот же идентификатор процессора, когда мы поместили команду wmic cpu get ProcessorId в их командные строки.
Теперь мы решили использовать серийный номер материнской платы вместо идентификатора процессора для совмещения с MAC-адресом. Я думаю, что наша цель будет достигнута таким образом, и если в некоторых случаях этого не произойдет, то в этих нескольких случаях мы должны отпустить ее.
Что скроет VPN
Единственное, что VPN скроет-это IP-адрес, с которого вы просматриваете сайт. Итак, если вы просматриваете Chrome где-то в Сибири и подключаетесь к VPN-серверу, где исходящее соединение находится в Европе. То веб-сайт увидит, что вы из Европы, предполагая, что VPN не реализует раздельное туннелирование… что совсем другая тема.
Если вы не хотите, чтобы ваш браузер идентифицировался, вы можете скачать браузерные плагины. Те, которые могут изменить строку user-agent на одно из нескольких предустановленных значений. Или на одно, которое вы можете ввести самостоятельно.
Практическое применение может заключаться в моделировании или тестировании поведения веб-сайта для пользователей. Для каждого определенного устройства и разрешения экрана. Изменение подключаемого модуля операционной системой будет зависеть от качества подключаемого модуля.
Знайте, что давно (1990-е годы) было время, когда вы могли бы быть идентифицированы в интернете. Причем вот как — по серийному номеру процессора Intel. Предположительно, Intel включила программное обеспечение, чтобы пользователи могли отключить эту идентификацию серийного номера через интернет. Но я не помню, чтобы у меня была такая возможность…
Информация о конфиденциальности: «Упс!»Я не знаю точно, но я подозреваю, что находчивый веб-кодер может создать JavaScript. Такой, который будет загружаться на странице, захватывать серийный номер процессора. Или MAC-адрес NIC и передавать его обратно на веб-сервер для регистрации. Так что все можно обойти… нужно только понимать что и как правильно делать.
Независимо от того, насколько интернет рекламируется как анонимный. Но существует несколько способов, с помощью которых пользователь может быть однозначно идентифицирован и отслежен. (Спасибо, Большой Брат и интернет-маркетологи. Ты вы супер!) На этом все, спасибо за внимание.
Мне нужно найти способ уникальной идентификации каждого компьютера, который посещает веб-сайт, который я создаю. Есть ли у кого-нибудь советы о том, как этого добиться?
Поскольку я хочу, чтобы решение работало на всех машинах и во всех браузерах (в разумных пределах), я пытаюсь создать решение с использованием javascript.
Печеньки не подойдут.
Мне нужна возможность в основном создать руководство, уникальное для компьютера и повторяемое, при условии, что с компьютером не произошло никаких аппаратных изменений. Направления, о которых я думаю, - это получение MAC-адреса сетевой карты и другой информации такого рода, которая будет идентифицировать машину, посещающую веб-сайт.
Вы не можете получить mac их сетевой карты - IP не содержит этой информации, лучшее, что вы можете получить, - это IP-адрес шлюза их интернет-провайдера. Для некоторых интернет-провайдеров это может быть одинаковым для всех пользователей в данном городе.
Тот факт, что вы не хотите, чтобы пользователь мог подделать его. Ответ, конечно же, не может быть выполнен без какого-либо вашего привилегированного компонента, установленного на компьютере пользователя.
MAC-адреса тривиально легко подделать. Мое убогое маленькое беспроводное соединение будет проходить через ваш MAC, заменять его собственным или использовать то, которое вы укажете.
Пожалуйста, прочитайте мой ответ на этой странице. у меня есть очень хорошая идея для этой проблемы :)
Идентификаторы безопасности и списки управления доступом (ACL)
После того, как пользователь вошел в систему Windows под своей учетной
записью, подсистема локальной авторизации (Local Security Authority Subsystem,
Lsass.exe) создает сессию входа и маркер для нее. Маркер - это структура данных,
которую ядро Windows определяет для представления учетной записи и которая
содержит в себе SID этой учетной записи, а также SID групп, к которым
принадлежит данная учетная запись на момент входа в систему и назначенные для
этой учетной записи и групп привилегии безопасности. Когда последний маркер,
ссылающийся на сессию входа, удаляется, LSASS удаляет и сессию входа, после чего
пользователь считается вышедшим из системы. Ниже можно увидеть информацию о моей
интерактивной сессии входа, отображенную с помощью утилиты Sysinternals
LogonSessions:
А здесь (в окне Handle Process Explorer) можно увидеть информацию о маркере,
который Lsass создал для этой сессии. Обратите внимание, что число, следующее за
именем учетной записи (7fdee), соответствует идентификатору входной сессии из
LogonSessions:
По умолчанию процессы наследуют копию маркера своего родительского процесса.
Так, каждый процесс, запущенный в моей интерактивной сессии, имеет копию
маркера, изначально унаследованного им от процесса Userinit.exe, который первым
создается Winlogon при каждом интерактивном входе в систему. Вы можете
посмотреть содержимое маркера процесса, сделав двойной щелчок на строке процесса
в
Process Explorer и переключившись на вкладку Security в диалоговом окне
свойств процесса:
Когда один из моих процессов открывает объект операционной системы, например,
файл или ключ системного реестра, подсистема безопасности осуществляет проверку
прав доступа, в ходе которой сверяются те записи в списке управления доступом
(ACL) объекта, которые ссылаются на SID, находящийся в маркере процесса.
Такая же проверка осуществляется и для сессии удаленного входа в систему при
использовании общих ресурсов с удаленных компьютеров. Для успешного подключения
к общему ресурсу нужно пройти аутентификацию на удаленной системе с помощью
учетной записи, известной этой системе. Если компьютер является частью "Рабочей
группы", то вам нужно вводить входные данные для локальной учетной записи
удаленной системы, а для системы, соединенной с доменом, это могут быть как
данные локальной учетной записи на сетевом компьютере, так и данные учетной
записи домена. Когда пользователь обращается к файлу на общем ресурсе, драйвер
файлового сервера этой системы использует маркер из сессии входа для проверки
прав доступа, транслируя его через механизм заимствования прав.
Дублирование SID
Пропагандируемый Microsoft способ создания установки Windows, пригодный для
развертывания системы на группы компьютеров, заключается в установке Windows на
эталонный компьютер и подготовке системы к клонированию с помощью утилиты
Sysprep. Этот метод называется "обобщением образа", поскольку при его загрузке
Sysprep персонализирует установку, генерируя новый SID компьютера, определяя
имеющиеся аппаратные средства, сбрасывая счетчик активации и устанавливая прочие
настройки, в том числе – имя компьютера.
Однако, некоторые IT-администраторы сначала ставят Windows на одну из своих
систем, устанавливают и настраивают приложения, а затем используют такие
средства развертывания, которые не сбрасывают SID на установочных образах
Windows. До сих пор наилучшим средством в таких ситуациях было использование
утилит для смены SID, таких как NewSID. Эти утилиты генерируют новый
идентификатор безопасности машины, а затем пытаются обновить его во всех
мыслимых местах, включая файловую систему и списки управления доступом в
реестре. Причина, по которой Microsoft не поддерживает подобный способ изменения
системы, довольно проста – в отличие от Sysprep, сторонние утилиты могут и не
знать обо всех тех местах, где Windows хранит идентификатор безопасности
компьютера. А раз так, то и надежность компьютера, на котором имеется и старый и
новый SID, не может быть гарантирована.
Так что же, можно считать проблемой наличие нескольких машин с одинаковыми
SID? Только в одном случае - если Windows при каких-либо обстоятельствах
ссылается на SID других компьютеров. К примеру, если во время подключения к
удаленной системе SID локального компьютера был передан на одну из удаленных
систем и использовался там для проверки прав доступа, тогда дублированный
идентификатор SID мог бы стать причиной наличия бреши в системе безопасности,
поскольку удаленная машина не смогла бы отличить SID удаленной учетной записи от
аналогичного SID локальной учетной записи (при условии, что в идентификаторах
совпадают и SID компьютера, и RID). Однако как мы отмечали, Windows не позволяет
пройти аутентификацию на удаленном компьютере, используя учетную запись,
известную только локальному компьютеру. Вместо этого необходимо указать либо
входные параметры, являющиеся локальными для удаленной системы, либо параметры
учетной записи домена, считающегося доверенным для удаленной системы. Удаленный
компьютер получает SID для локальной учетной записи в своей собственной базе
данных учетных записей (SAM), а сведения об аккаунте домена об берет в базе
Active Directory на контроллере домена. Удаленный компьютер никогда не
предоставляет SID компьютера подключающейся машине.
Другими словами, не SID предоставляет доступ к компьютеру, а имя
пользователя и пароль учетной записи: одно лишь знание SID учетной записи на
удаленной машине не позволит получить доступ к компьютеру или его ресурсам.
Чтобы еще раз убедиться в этом, достаточно вспомнить тот факт, что встроенные
учетные записи (например, Local System) имеют одинаковые SID на любом
компьютере, что могло бы стать серьезной уязвимостью, если бы доступ основывался
на SID.
Как я уже сказал ранее, из этого правила есть одно исключение, и это
исключение – сами контроллеры домена. У каждого домена есть уникальный SID
домена, генерируемый случайным образом при установке домена, и все SID
компьютеров, входящих в состав домена, совпадают с SID домена. Поэтому в
определенном смысле эту ситуацию можно рассматривать, как использование
идентификатора SID другими компьютерами. Это означает, что компьютеры,
являющиеся частью домена, не могут иметь те же самые SID компьютера, что и
контроллер домена. Однако, как и эти компьютеры, каждый контроллер домена имеет
учетную запись компьютера в домене, по которой и осуществляется их идентификация
при авторизации на удаленной системе.
В целом ряде статей, посвященных дублированию SID, включая
эту статью из
базы знаний Microsoft, содержится предупреждение, что наличие у нескольких
компьютеров одинаковых SID приводит к тому, что ресурсы на сменных носителях
(например, на отформатированных в NTFS внешних дисках) не могут быть защищены
средствами локальной учетной записи. Однако в них упускается из виду то
обстоятельство, что права доступа на таких накопителях защитить не получится в
любом случае, поскольку подсоединить их можно к такой машине, которой
безразличны права доступа NTFS. Более того, сменные накопители чаще всего
используют права доступа по умолчанию, позволяющие осуществлять доступ хорошо
известным идентификаторам SID (группы "Администраторы", к примеру), одинаковым
на любой системе. Это фундаментальное правило физической защиты, поэтому в
Windows 7 включена функция Bitlocker-to-Go, позволяющая зашифровывать данные на
сменных носителях.
Последним вариантом, при котором дублирование SID могло бы привести к
возникновению проблемы - это ситуация, когда распределенное приложение
использовало бы идентификатор безопасности компьютера в качестве единственно
возможного средства идентификации машин. Однако ПО от Microsoft так не работает
хотя бы потому, что использовать SID компьютера для этого бесполезно, поскольку
все контроллеры домена имеют одинаковые SID. Если нужно однозначно
идентифицировать компьютер, используются либо имена компьютеров, либо доменные
идентификаторы SID.
Механизм
На днях я смотрел шоу Венди Уильямс со своей подругой и был в ужасе, когда хозяин посоветовал своим зрителям удалять историю своих браузеров хотя бы раз в месяц. Удаление истории браузера обычно имеет следующие эффекты:
- Удаляет историю посещенных веб-сайтов.
- Удаляет куки и window.localStorage (ооо человек).
Большинство современных браузеров делают эту опцию доступной, но не бойтесь друзей. Ибо есть решение. В браузере есть механизм кэширования для хранения скриптов/изображений и прочего. Обычно, даже если мы удаляем нашу историю, этот кеш браузера остается. Все, что нам нужно, это способ хранения наших данных здесь. Есть 2 способа сделать это. Лучше использовать SVG-изображение и хранить наши данные в его тегах. Таким образом, данные могут быть извлечены, даже если JavaScript отключен с помощью Flash. Однако, поскольку это немного сложно, я продемонстрирую другой подход, который использует JSONP (Wikipedia)
Теперь мы можем получить наш ключ сеанса в любое время:
window.__sid || window.localStorage.getItem("sid") || getCookie("sid") || ""
Как сделать, чтобы tracking.js оставался в браузере?
Last-Modified сообщает браузеру, что этот файл практически никогда не изменяется. Cache-Control говорит прокси и шлюзам не кэшировать документ, но сообщает браузеру кэшировать его в течение 1 года.
В следующий раз, когда браузер запросит документ, он отправит заголовки If-Modified-Since и If-None-Match . Мы можем использовать их для возврата ответа 304 Not Modified .
Теперь каждый раз, когда браузер запрашивает tracking.js , наш сервер ответит результатом 304 Not Modified и принудительно выполнит локальную копию tracking.js .
Я до сих пор не понимаю. Объясни мне это
Читайте также: