Что такое машина?
Машины изготавливаются из деталей, поэтому определение того, является ли машина все тем же, само по себе может быть философским вопросом.
Например, жесткий диск компьютера, вероятно, имеет уникальный серийный номер, если у машины есть сетевая карта, у него есть уникальный MAC-адрес, и он может даже рассматриваться как «другая машина» при работе в других операционных системах ( Windows, Mac и т. Д.). Все эти уникальные идентификаторы могут быть объединены для создания уникального идентификатора компьютера, и именно это делают некоторые поставщики программного обеспечения, такие как Mathematica, чтобы убедиться, что вы не запускаете программное обеспечение на компьютере или операционной системе, у вас нет лицензии. это для.
Использование идентификаторов интерфейса
С появлением IPv6 , наконец, широко доступного, Идентификатор интерфейса протокола может служить идентификатором вашего компьютера (или, по крайней мере, его сетевой карты), поскольку он содержит MAC -адрес сетевой карты. IPv6 предоставляет расширения конфиденциальности для предотвращения такого рода идентификации, поскольку в эпоху персональных компьютеров и мобильных устройств идентификация компьютеров равна идентификации пользователей, что является огромной проблемой конфиденциальности.
В настоящее время мобильные устройства Apple и Android не предоставляют расширение конфиденциальности, и по умолчанию они отключены на Mac и Linux. Похоже, что по умолчанию только в Windows 7 они включены.
Доступ к IP-адресу в PHP и JavaScript
- В PHP довольно просто получить доступ к IP-адресу через
$_SERVER['REMOTE_ADDR']
- В javascript вы можете отправить запрос JSONP на сервер, который возвращает IP-адрес пользователя.
См .: Можно ли выполнить поиск DNS (имя хоста по IP-адресу) с использованием клиентского Javascript?
Доступ к MAC-адресу в Javascript
Даже если на машине есть только IPv4 - есть подтверждение концепции взлома (http://samy.pl/mapxss/), которая извлекает MAC-адрес из некоторых маршрутизаторов через JavaScript XSS. Затем MAC-адрес вашего маршрутизатора отправляется в геолокацию Google. служба для определения точного местоположения машины (конечно, это только слабый идентификатор для мобильных устройств)
Объединение идентификаторов
Веб-браузеры предоставят вам строку userragent, которая сделает ваш идентификатор еще более «уникальным», а также файлы cookie, службы геолокации и т. Д.
Хотя ни один из этих методов не обеспечивает способ создания 100% уникального идентификатора, некоторые из этих методов в сочетании могут обеспечить очень высокую точность идентификации. Даже если части машины изменены, вы можете повторно идентифицировать их, применяя множество методов идентификации. Также обратите внимание, что при использовании идентификации браузера и т. Д. Вы можете столкнуться с проблемой чрезмерной идентификации, особенно если машина использует более одного браузера для доступа к вашей службе.
Запрашиваемая у пользователя
Из-за потенциальных проблем с конфиденциальностью вам следует рассмотреть возможность использования подхода с подпиской для создания уникального ID. Кроме того, поскольку пользователи связываются со своими машинами, они единственные, кто может однозначно идентифицировать свою машину с 100% определенностью . Поэтому лучше всего предоставить пользователю стимул доверять вам идентификацию своих машин. Простой сценарий - предоставить пользователю логин (чтобы у вас была идентификация пользователя), а затем попросить пользователя помочь вам с идентификацией машины. Конечно, это работает, только если вы доверяете своему пользователю, но если вы не доверяете ему, он, вероятно, не должен доверять вам.