Может ли аппаратная информация быть получена на устройстве, взаимодействующем с сервлетом Java?

Есть ли способ собрать аппаратную информацию для однозначной идентификации определенного устройства (не категории), которое делает запросы к сервлету Java? Я искал это, но я не думаю, что есть метод (заголовок "пользовательский агент" может использоваться для некоторой информации, но это только идентифицирует определенный набор устройств, и этого недостаточно).

1 ответ

Решение

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

По сути, вам нужно собрать эту информацию на стороне клиента, а затем отправить ее на стороне сервера в качестве параметров запроса самостоятельно. Однако вы, в свою очередь, ограничены в доступных способах сбора этой информации. Например, JavaScript не позволяет этого из соображений безопасности. Ваша ближайшая ставка - это подписанный (!) Java- апплет или приложение Web Start. Это позволяет клиенту загружать некоторый код Java и выполнять его локально. Но это тоже не всегда надежно. Клиент может, например, взломать код апплета / веб-запуска и / или изменить трафик HTTP между апплетом и сервером.

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

Другие вопросы по тегам