Ist eine Möglichkeit, Hardwareinformationen zu sammeln, um ein bestimmtes Gerät (keine Kategorie) eindeutig zu identifizieren, das Anforderungen an ein Java-Servlet sendet? Ich suchte nach diesem, aber ich denke nicht, dass es eine Methode gibt ("Benutzeragentheader" kann für einige Informationen benutzt werden, aber das kennzeichnet nur einen bestimmten Satz von Geräten und es ist nicht genug).Können Hardwareinformationen auf einem Gerät abgerufen werden, das mit einem Java-Servlet interagiert?
Antwort
Diese Information ist nirgendwo in einer HTTP-Anfrage verfügbar. Die entfernte Adresse (Client-IP) und der Benutzeragent (die Zeichenfolge, die der Browser vorgibt zu sein) sind die nächsten eindeutigen Identifikatoren, die Sie je nach HTTP-Anforderung extrahieren können. Selbst dann sind diese Informationen nicht zuverlässig. Der Client kann beispielsweise einen anonymen Proxy verwenden. Der Client kann beispielsweise die User-Agent-Zeichenfolge des Browsers geändert haben.
Sie müssen diese Informationen grundsätzlich auf der Client-Seite sammeln und dann als Parameter an die Server-Seite senden. Sie sind jedoch begrenzt in den verfügbaren Möglichkeiten, um diese Informationen zu sammeln. JavaScript lässt dies beispielsweise aus Sicherheitsgründen nicht zu. Ihre engste Wette ist eine signierte (!) Java Applet oder Web Start Anwendung. Dadurch können Sie den Client Java-Code herunterladen und lokal ausführen lassen. Aber das ist auch nicht immer zuverlässig. Der Client kann beispielsweise den Applet/Webstart-Code hacken und/oder den HTTP-Verkehr zwischen dem Applet und dem Server manipulieren.
Eine andere Möglichkeit besteht darin, ein Registrierungs-/Autorisierungs-/Authentifizierungssystem einzuführen, bei dem der Client selbst eine eindeutige Kennung durch eine gültige Anmeldung angeben muss. Dies ist nicht nur einfacher, sondern auch robuster.
Können Sie erklären, welche Art von Informationen Sie suchen? Wirklich Sie sind durch den User Agent begrenzt, ich bin mir ziemlich sicher. Ich glaube nicht, dass Sie viel mehr als das feststellen könnten, wenn auch nur aus Sicherheitsgründen. –
Ich brauche eine Möglichkeit, ein Gerät, das Anfragen an ein Servlet stellt, eindeutig zu identifizieren. Zum Beispiel möchte ich seine Mac-Adresse wissen. Auch mit einem Java-Applet weiß ich nicht, ob ich diese Informationen finden kann (wegen der benötigten Berechtigungen) –