2016-09-12 2 views
3

Ich baue eine Desktop-App in Java, wo ich den angemeldeten Benutzernamen brauche. Ich benutze System.getProperty("user.name"), um den Benutzernamen zu erhalten.Wie verhindert man, dass System.getProperty ("user.name") gefälscht wird

Aber dies kann durch die Verwendung

Properties p = System.getProperties(); 
    p.put("user.name", "XYZ"); 
    System.setProperties(p); 

oder durch

-Duser.name=someothername 

vorgetäuscht werden, Wie kann ich verhindern, dass dieser Spoofing oder eine Alternative zu in einer sicheren Art und Weise eingeloggt Benutzername zu erhalten. Die Desktop-Anwendung ist plattformunabhängig.

+0

Wie authentifizieren Sie den Benutzer? Sie können nur sicher sein, dass es ein gültiger Benutzer ist, nachdem die Authentifizierung erfolgreich war. – jbin

+0

Es gibt einen Mechanismus, um den Benutzer zu authentifizieren. Das Problem besteht darin, dass die App auf dem freigegebenen Computer ausgeführt wird und dass die Benutzer, die sich angemeldet haben, die authentifizierten Benutzer sein können. Da die System.getProperty ("user.name") gefälscht werden kann, möchten wir jegliche missbräuchliche Behandlung verhindern. –

Antwort

5

Systemeigenschaften sind keine Umgebungsvariablen. Verwenden Sie System.getenv("USERNAME") für Umgebungsvariablen. System.properties kann weiterhin vom Benutzer in der Java-Befehlszeile mit java -Duser.name=someoneelse festgelegt werden.

Verwandte Themen