2015-01-12 7 views
6
gefälscht werden

Um den Namen des aktuellen Benutzers in einem Java-Programm zu erhalten, können Sie simply fetch the value of the user.name system property:Kann user.name

System.getProperty("user.name"); 

Aber wie sicher ist das? Kann ein Benutzer, der das Programm ausführt, diese Eigenschaft einfach auf einen beliebigen Wert (z. B. über ein Befehlszeilenargument der JVM) für gängige Laufzeitumgebungen setzen? Kann ein Benutzer diesen Benutzernamen leicht fälschen?


Ich frage, weil ich ein Kommandozeilen-Programm schreibe, die von jedermann ausgeführt werden kann, erlaube aber einige privilegierten Operationen nur dann, wenn der Benutzer ein spezieller administrativer Benutzer ist.

Antwort

6

Ja, dieser Wert kann "gefälscht" werden und ist nicht zuverlässig, wenn es dem Benutzer freisteht, die Anwendung zu starten.

Das Starten der App mit der JVM-Datei -Duser.name=someothername bewirkt, dass System.getProperty("user.name") diesen Wert zurückgibt.

0

Für alle mögliche Landung auf diesem immer wieder:

Mit dem cmd-Befehl whoami und Lesen des Eingangs this post verwenden, sollten Sie die Benutzername die Verwendung als „Validierung“ ein sicherer Weg sein.

Ausgenommen, dies kann auch gefälscht werden, was für einen cmd-Befehl schwieriger sein kann als für ein JVM-Argument ...

Verwandte Themen