Używam w moim programie JPasswordField
. Kiedy pytam getPassword()
, otrzymuję tablicę char[]
. Ale kiedy dodaję ActionListener
do JPasswordField
i pytam getActionCommand()
, otrzymuję hasło jako String
. Czy to hasło jest zapisywane w obiekcie zdarzenia jako String
? Czy to nie jest kwestia bezpieczeństwa?Zabezpieczenie JPasswordField z poleceniem akcji
Odpowiedz
Po ustawieniu polecenia akcji dla komponentu tekst w nim będzie komendą akcji. Dlatego właśnie otrzymujesz hasło.
Nawet JTextField
również
JTextField jt=new JTextField("text");
jt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae)
{
System.out.println(ae.getActionCommand());
}
});
Jest to kwestia bezpieczeństwa, ponieważ są coraz hasło jako ciąg, który jest niezmienny, a nie char[]
Gdy polecenie działanie jawne nie jest ustawiony, tekst w komponent zostanie wysłany do konstruktora ActionEvent
, ale nie ustawiłeś go specjalnie jako polecenie akcji. Parametr command
może być jednak null
, ale nie jest zalecane, aby być null
, dlatego tekst w komponencie jest domyślnie poleceniem akcji. Jeśli nie ma hasła w JPasswordField
, pustym ciągiem będzie polecenie akcji.
Nie próbuj ustawić polecenia akcji na null
, jeśli jest to null
, wówczas tekst w JPasswordField
będzie komendą akcji. Problem pojawia się ponownie.
Polecam Ci ustawić komendę akcji dla JPasswordField
bez pozostawiania jej na razie, dopóki nie zostanie to naprawione przez Oracle.
JPasswordField jt=new JPasswordField("text");
jt.setActionCommand("");
jt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae)
{
System.out.println(ae.getActionCommand());
}
});
Thx za odpowiedź. Dobrze to wiedzieć. – Yggdrasil
- 1. JPasswordField kodowanie wejścia
- 2. zabezpieczenie connectionString
- 3. ssh z poleceniem .... Plus powłoka
- 4. Przerwa pętli z poleceniem systemowym
- 5. Różnica między poleceniem "install" adb a poleceniem "pm install"?
- 6. Zabezpieczenie przestrzeni dyskowej Firebase
- 7. jmx zabezpieczenie wątku mbean
- 8. zabezpieczenie tokenu sesji parse.com
- 9. Zabezpieczenie sprężynowe @RequestBody
- 10. Zabezpieczenie JSON vs. Pickle
- 11. wstawianie wielu wierszy z jednym poleceniem wstawienia
- 12. RC4 nie działa poprawnie z poleceniem openssl?
- 13. Przekieruj do akcji z innej akcji
- 14. Zabezpieczenie hasłem uruchamianie aplikacji Android
- 15. Zabezpieczenie wejścia iOS Safari caret
- 16. Błąd: "zlib" jest nieprawidłowym poleceniem
- 17. Wyjątek wskaźnika Null w korzystaniu z dostawcy akcji akcji akcji akcji
- 18. Kod do wyodrębniania z prawej strony z poleceniem "cut"?
- 19. Ukryte atrybuty Laravel. na przykład Hasło - zabezpieczenie
- 20. Bezpieczne zabezpieczenie modułów Lazy-Loaded (Angular 2)
- 21. zabezpieczenie hasłem wielu katalogów za pośrednictwem htaccess
- 22. Najlepszy sposób na zabezpieczenie kodu Excel VBA?
- 23. Zabezpieczenie wykonania stosu i randomizacja na ubuntu
- 24. Zabezpieczenie przed wiosennym pobraniem obiektu użytkownika
- 25. "edytuj" nie jest prawidłowym poleceniem w cmd.exe?
- 26. Uruchom kod przed dowolnym poleceniem zarządzania django.
- 27. Wykonaj polecenie cat z poleceniem sed w linux
- 28. Utwórz plik zip: błąd z uruchomionym poleceniem "" miał stan 127
- 29. Dlaczego funkcja zsh globbing nie działa z poleceniem find?
- 30. `git: remote` nie jest poleceniem heroku
Używanie ciągu znaków jest problemem związanym z bezpieczeństwem. Aby uzyskać szczegółowe informacje, przeczytaj http://stackoverflow.com/questions/8881291/why-is-char-preferred-over-string- for-passwords (odpowiedź od Jona Skeeta). –
+1 dobry połów, brzmi jak błąd dla mnie! Wyjście to zawsze ustawiać komendę actionCommand, aby nie powracała do domyślnej wartości – kleopatra
+1 dla wielkiego znaleziska :-) Czy teraz zgłosisz to do 'Java Oracle', czy nie? –