2012-03-27 76 views
1

是一種收集硬件信息以唯一標識向Java Servlet發出請求的特定設備(而非類別)的方法?我搜索了這個,但我不認爲有一種方法(「用戶代理」頭可以用於某些信息,但只能識別一組設備,這是不夠的)。可以在與Java servlet交互的設備上獲取硬件信息嗎?

+1

你能解釋你正在尋找什麼類型的信息嗎? 真的,你是受限於用戶代理我非常確定。我認爲,如果純粹出於安全原因,你不能確定更多的東西。 – 2012-03-27 14:24:59

+0

我需要一種方法來唯一標識向servlet發出請求的設備。例如,我想知道它的mac地址。即使使用Java Applet,我也不知道我是否可以找到該信息(由於需要權限) – 2012-03-28 09:35:22

回答

3

此信息在HTTP請求中的任何位置都不可用。遠程地址(客戶端IP)和用戶代理(瀏覽器假裝的字符串)是您可以根據HTTP請求提取的最接近的唯一標識符。即使這樣,這些信息也不可靠。客戶端可以使用匿名代理。客戶端可以例如更改瀏覽器的用戶代理字符串。

您基本上需要在客戶端收集這些信息,然後將其作爲請求參數自己發送到服務器端。然而,您收集這些信息的方式卻受到限制。由於安全原因,JavaScript例如不允許這樣做。您最接近的賭注是已簽名的(!)Java AppletWeb Start應用程序。這允許您讓客戶端下載一些Java代碼並在本地執行它。但這也不總是可靠的。客戶端可以例如破解applet/webstart代碼和/或篡改applet和服務器之間的HTTP通信。

另一種方法是引入註冊/授權/認證系統,其中客戶端需要通過有效的登錄提供唯一標識符。這不僅更簡單,而且更強大。