Имейте в виду, что независимо от сценария причина всегда одинакова в .NET:
Вы пытаетесь использовать ссылочную переменную, значение которой
Nothing
/null
. Если для ссылочной переменной значениеNothing
/null
, это означает, что на самом деле оно не содержит ссылку на экземпляр любого объекта, который существует в куче.Вы либо никогда не присваивали какую-либо переменную, никогда не создавали экземпляр значения, присвоенного переменной, или вы вручную устанавливали переменную, равную
blockquote>Nothing
/null
, или вы вызывали функцию, которая установите для этой переменной значениеNothing
/null
.
Когда я использую машину, которая никогда не посещала мой веб-сайт онлайн-банкинга, меня спрашивают о дополнительной аутентификации. то, если я вернусь второй раз на сайт онлайн-банкинга, я не получаю дополнительную аутентификацию ... я удалил все файлы cookie в IE и перешел на мой сайт онлайн-банкинга, полностью ожидая, что вас снова зададут вопросы аутентификации. к моему удивлению, я не спросил. это не приводит к тому, что банк верит, что банк делает какую-то маркировку для ПК, которая не включает файлы cookie?
blockquote>Это довольно распространенный тип аутентификации, используемый банками.
Скажите, что вы обращаетесь на свой банковский сайт через example-isp.com. В первый раз, когда вы там, вас попросят ввести свой пароль, а также дополнительную проверку подлинности. После того, как вы прошли, банк знает, что пользователь «thatisvaliant» аутентифицирован для доступа к сайту через example-isp.com.
В будущем он не будет запрашивать дополнительную аутентификацию (кроме вашего пароля ), когда вы обращаетесь к сайту через example-isp.com. Если вы попытаетесь получить доступ к банку через another-isp.com, банк снова повторит ту же процедуру.
Итак, чтобы определить, какой идентификатор банка является вашим интернет-провайдером и / или netblock, на основе вашего Айпи адрес. Очевидно, что не каждый пользователь вашего интернет-провайдера - это то, почему банк все еще спрашивает вас о вашем пароле.
У вас когда-либо был звонок по кредитной карте, чтобы убедиться, что все в порядке, когда вы используете кредитную карту в другой стране? Та же концепция.
Возможно, вы захотите попробовать установить уникальный идентификатор в evercookie (он будет работать с перекрестным браузером, см. их часто задаваемые вопросы): http://samy.pl/evercookie/
Существует также компания под названием ThreatMetrix, которая используется многими крупными компаниями для решения этой проблемы: http://threatmetrix.com/our-solutions/solutions-by-product/trustdefender-id/ Они довольно дороги, а некоторые из их других продуктов не очень хороши, но их идентификатор устройства работает хорошо.
Наконец, есть реализация jQuery с открытым исходным кодом идеи panopticlick: https: //github.com/carlo/jquery-browser-fingerprint Он выглядит довольно наполовину испеченным прямо сейчас, но может быть расширен.
Надеюсь, что это поможет!
Существует лишь небольшая информация, которую вы можете получить через HTTP-соединение.
Итак, правильный ответ заключается в том, что вы не можете достичь того, что вы жить по протоколам HTTP поверх IP. Однако, используя комбинацию файлов cookie, а также IP и поля в HTTP-запросе, у вас есть хорошие шансы на угадывание, что-то вроде того, что это за машина. Пользователи, как правило, используют только один браузер, и часто с одной машины, поэтому это может быть довольно доступным, но это будет зависеть от аудитории ... технари, скорее всего, будут возиться с этим материалом и использовать больше машин / браузеров. Кроме того, это может быть связано даже с попыткой геолокации IP-адреса и использования этих данных. Но в любом случае нет никакого решения, которое будет правильным все время.
Предложения об использовании файлов cookie в стороне, единственный исчерпывающий набор идентификационных атрибутов, доступных для опроса, содержится в заголовке запроса HTTP. Таким образом, можно использовать некоторое подмножество из них для создания псевдо-уникального идентификатора для пользовательского агента (то есть браузера). Кроме того, большая часть этой информации, возможно, уже зарегистрирована в так называемом «протоколе доступа» вашего программного обеспечения веб-сервера по умолчанию и, если нет, может быть легко настроена для этого. Затем можно было бы разработать uttity, который просто сканирует содержимое этого журнала, создавая отпечатки пальцев каждого запроса, состоящего, например, из IP-адреса и строки User Agent и т. Д. Чем больше данных доступно, содержимое конкретных файлов cookie, добавляет к качеству уникальности этого отпечатка пальца. Хотя, как уже многие другие уже заявили, протокол HTTP не делает этот 100% надежным - в лучшем случае это может быть довольно неплохим показателем.
Файлы cookie не будут полезны для определения уникальных посетителей. Пользователь может очистить файлы cookie и обновить сайт - он снова классифицируется как новый пользователь.
Я думаю, что лучший способ сделать это - реализовать серверное решение (по мере необходимости где-то хранить ваши данные). В зависимости от сложности ваших потребностей для таких данных вам нужно будет определить, что классифицируется как уникальный визит. Разумным методом было бы позволить IP-адресу вернуться на следующий день и получить уникальный визит. Несколько посещений с одного IP-адреса за один день не следует считать уникальными.
Использование PHP, например, тривиально, чтобы получить IP-адрес посетителя и сохранить его в текстовом файле ( или база данных sql).
Решение на стороне сервера будет работать на всех машинах, потому что вы собираетесь отслеживать пользователя, когда он сначала загружает ваш сайт. Не используйте javascript, поскольку это предназначено для сценариев на стороне клиента, плюс пользователь может отключить его в любом случае.
Надеюсь, что это поможет.
Поскольку я хочу, чтобы решение работало на всех машинах и во всех браузерах (в разумных пределах), я пытаюсь создать решение с помощью javascript.
blockquote>Разве это не правда хорошая причина not использовать javascript?
Как говорили другие - файлы cookie, вероятно, являются вашим лучшим вариантом - просто обратите внимание на ограничения.
Я бы сделал это, используя комбинацию файлов cookie и флеш-файлов. Создайте GUID и сохраните его в файле cookie. Если файл cookie не существует, попробуйте прочитать его из файла cookie. Если он все еще не найден, создайте его и напишите в файл cookie. Таким образом, вы можете использовать один и тот же идентификатор GUID в браузерах.
Невозможно идентифицировать компьютеры, обращающиеся к веб-сайту, без участия их владельцев. Однако, если вы позволите, вы можете сохранить файл cookie, чтобы идентифицировать машину, когда он снова посещает ваш сайт. Ключ в том, что посетитель находится под контролем; они могут удалить cookie и появиться в качестве нового посетителя в любое время.
Эти люди разработали метод отпечатки пальцев для распознавания пользователя с высоким уровнем точности:
https://panopticlick.eff.org/static/browser-uniqueness.pdf
Мы исследуем степень, в которой современные веб-браузеры подвергаются «отпечатку пальца устройства» через информацию о версии и конфигурации, которую они будут передавать на веб-сайты по запросу. Мы реализовали один возможный алгоритм отпечатка пальца и собрали эти отпечатки пальцев из большого набора браузеров, которые посетили нашу тестовую сторону, panopticlick.eff.org . Мы заметили, что распределение нашего отпечатка пальца содержит не менее 18,1 бит энтропии, а это означает, что если мы выбираем браузер случайным образом, в лучшем случае мы ожидаем, что только один из 286 777 других браузеров поделится своим отпечатком. Среди браузеров, поддерживающих Flash или Java, ситуация хуже, причем средний браузер имеет не менее 18,8 бит идентификационной информации. 94.2% браузеров с Flash или Java были уникальными в нашем примере.
Наблюдая за возвращающимися посетителями, мы оцениваем, как быстро отпечатки пальцев браузера могут со временем меняться. В нашем примере отпечатки пальцев изменились довольно быстро, но даже простая эвристика, как правило, могла угадать, когда отпечаток пальца был «обновленной» версией ранее обнаруженного отпечатка пальца браузера, с 99,1% догадок правильной и ложной положительной скоростью всего 0,86% .
Мы обсуждаем, что на самом деле представляет собой отпечаток пальца для обеспечения конфиденциальности, и какие контрмеры могут быть подходящими для предотвращения этого. Существует компромисс между защитой от отпечатков пальцев и некоторыми видами отладки, которые в современных браузерах сильно зависят от конфиденциальности. Как это ни парадоксально, технологии защиты от отпечатков пальцев могут быть самонадеянными, если они не используются достаточным количеством людей; мы показываем, что некоторые меры по обеспечению конфиденциальности в настоящее время становятся жертвами этого парадокса, но другие не ...
blockquote>
Возможно использование флеш-файлов cookie :
Вам нужно будет создать небольшой (скрытый) флеш-фильм для чтения и записи.
Независимо от выбранного маршрута, убедитесь, что ваши пользователи выбирают IN для отслеживания, иначе вы «вторгаются в их личную жизнь и становятся одним из плохих парней.
Предполагая, что вы не хотите, чтобы пользователь находился под контролем, вы не можете.
Если вы хотите заставить своего посетителя установить какое-то программное обеспечение и использовать TCPA, вы можете что-то вытащить из него. .
Действительно, то, что вы хотите сделать, не может быть сделано, потому что протоколы этого не позволяют. Если статические IP-адреса были универсально использованы, вы могли бы это сделать. Это не так.
Если вы действительно хотите идентифицировать людей , войдите в систему.
Поскольку они, вероятно, будут перемещаться разные страницы на вашем веб-сайте, вам нужен способ отслеживать их по мере их перемещения.
Пока они вошли в систему, и вы отслеживаете их сеанс на своем сайте с помощью файлов cookie / link- параметры / маяки / что-то еще, вы можете быть уверены, что они используют один и тот же компьютер в течение этого времени.
В конечном счете, неверно сказать, что это говорит вам, какой компьютер они используют, если ваши пользователи не используют ваша собственная локальная сеть и не имеют статических IP-адресов.
Если то, что вы хотите сделать, выполняется в сотрудничестве с пользователями, и в каждом cookie есть только один пользователь, и они используют один веб-браузер, просто используйте cookie.
A Trick:
Обратите внимание: (Первая страница регистрации) и (Вторая страница регистрации) не должны находиться в отдельных страницах. вы делаете только 1 страницу. (например: register.php) и сделать его умным для переключения между First PHP Style и Second PHP Style
Мое сообщение не может быть решением, но я могу привести пример, где эта функция была реализована.
Если вы впервые заходите на страницу регистрации www.supertorrents.org
с вашего компьютера, все нормально. Но если вы обновите страницу или снова откроете страницу, она идентифицирует, что вы ранее посещали страницу. Настоящая красота приходит сюда - она идентифицируется, даже если вы переустанавливаете Windows или другую ОС.
Я где-то читал, что они хранят идентификатор ЦП. Хотя я не мог найти, как они это делают, я серьезно сомневаюсь в этом, и они могут использовать MAC-адрес для этого.
Я определенно разделим, если найду , как для этого.
Существует популярный метод, называемый отпечатком на холсте, описанным в этой научной статье: Веб никогда не забывает: механизмы постоянного слежения в дикой природе . Когда вы начнете искать его, вы будете удивлены, как часто он используется.
В статье также рассматриваются другие постоянные методы отслеживания, такие как evercookies, refawning http и Flash cookie, а также синхронизация файлов cookie.
Подробнее о снятии отпечатков пальцев здесь:
Как и в предыдущих решениях, cookie-файлы являются хорошим методом, имейте в виду, что они идентифицируют браузеры. Если бы я посетил веб-сайт в Firefox, а затем в Internet Explorer файлы cookie будут храниться для обеих попыток отдельно. Некоторые пользователи также отключили куки-файлы (но больше людей отключили JavaScript).
Еще один способ рассмотрения - это I.P. и идентификация имени хоста (помните, что они могут различаться для пользователей удаленного доступа / нестатического IP-адреса, AOL также использует защищенные IP-адреса). Однако, поскольку это только идентифицирует сети, это может не работать, а также файлы cookie.
Я думаю, что файлы cookie могут быть тем, что вы ищете; это то, как большинство сайтов уникально идентифицируют посетителей.
Есть недостатки как в подходах cookie, так и в не-cookie. Но если вы можете простить недостатки подхода к cookie, вот идея.
Если вы уже используете Google Analytics на своем сайте, вам не нужно писать код, чтобы отслеживать уникальных пользователей самостоятельно. Google Analytics делает это для вас через [cookie] __utma
, как описано в документации Google . И повторно используя это значение, вы не создаете дополнительную полезную нагрузку cookie, которая имеет преимущества эффективности при запросах страниц.
И вы могли бы написать код достаточно легко, чтобы получить доступ к этому значению, или использовать этот скрипт getUniqueId()
.
Я предполагаю, что вердикт: я не могу программно однозначно идентифицировать компьютер, который посещает мой веб-сайт.
У меня есть следующий вопрос. Когда я использую машину, которая никогда не посещала мой веб-сайт онлайн-банкинга, меня спрашивают о дополнительной аутентификации. то, если я вернусь во второй раз на сайт онлайн-банкинга, я не получаю дополнительную аутентификацию. прочитав ответы на мой вопрос, я решил, что это должен быть куки-файл. поэтому я удалил все куки в IE и перешел на мой сайт онлайн-банкинга, полностью ожидая, что вас снова зададут вопросы аутентификации. к моему удивлению, я не спросил. разве это не приводит к тому, что банк верит, что банк делает какую-то маркировку для ПК, которая не включает в себя куки?
далее, после многоголоса сегодня я нашел следующую компанию, которая утверждает, что продает решение, которое однозначно идентифицирует машины, которые посетите веб-сайт. http://www.the41.com/products.asp .
Я ценю всю полезную информацию, если вы могли бы уточнить эту противоречивую информацию, которую я нашел, я был бы очень благодарен ей.
Вы можете использовать fingerprintjs2
new Fingerprint2().get(function(result, components) {
console.log(result) // a hash, representing your device fingerprint
console.log(components) // an array of FP components
//submit hash and JSON object to the server
})
. После этого вы можете проверить всех своих пользователей на наличие существующих и проверить сходство JSON, поэтому даже если их отпечатки пальцев мутируют, вы все равно можете отслеживать их