java - 能否在与 Java servlet 交互的设备上获取硬件信息?

标签 java servlets hardware-id system-identification

是一种收集硬件信息以唯一标识向 Java servlet 发出请求的特定设备(不是类别)的方法吗?我搜索了这个,但我不认为有一种方法(“用户代理” header 可用于某些信息,但它仅标识一组特定的设备并且它是不够的)。

最佳答案

此信息在 HTTP 请求中的任何地方都不可用。远程地址(客户端 IP)和用户代理(浏览器假装的字符串)是您可以根据 HTTP 请求提取的最接近的唯一标识符。即便如此,这些信息也不可靠。例如,客户端可以使用匿名代理。例如,客户端可以更改浏览器的用户代理字符串。

你基本上需要在客户端收集这些信息,然后自己将其作为请求参数发送到服务器端。然而,反过来,您收集此信息的可用方式有限。例如,出于安全原因,JavaScript 不允许这样做。您最接近的赌注是签名(!)Java AppletWeb Start应用。这允许您让客户端下载一些 Java 代码并在本地执行它。但这也不总是可靠的。例如,客户端可以破解 applet/webstart 代码和/或篡改 applet 和服务器之间的 HTTP 流量。

另一种方法是只引入一个注册/授权/认证系统,其中客户端需要通过有效登录自行提供唯一标识符。这不仅更简单,而且更健壮。

关于java - 能否在与 Java servlet 交互的设备上获取硬件信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9891453/

相关文章:

java - 在 Spring Roo 中自定义 save() 方法

java - 在 Solr 中实例化自定义 FilterFactory 类时出错

java - 如何在同一个servlet中处理上传的文件和数据?

java - 在 Tomcat Web 应用程序中读取序列化数据时发生奇怪的内存泄漏

java - 无法在 "/Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home/bin/policytool"(-1) 处找到可执行文件

java - 在 Java 中获取可用剩余堆栈内存的最佳方法?

servlets - 如何在基于 servlet 的项目中获取部署根目录?

java - 生成特定计算机的唯一 ID

c++ - 如何使用 C++ 在 Windows 中获取硬件信息?

c# - 从硬件 ID 生成激活 key