Sto utilizzando un JPasswordField
nel mio programma. Quando chiedo getPassword()
, ottengo un array char[]
. Ma quando aggiungo uno ActionListener
allo JPasswordField
e chiedo allo getActionCommand()
, ottengo la password come String
. Questa password è salvata nell'oggetto evento come String
? Non si tratta di un problema di sicurezza?Sicurezza JPasswordField con comando di azione
risposta
Quando non si imposta alcun comando di azione per un componente, il testo al suo interno sarà il comando di azione. Ecco perché stai ottenendo la password.
Anche per JTextField
anche
JTextField jt=new JTextField("text");
jt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae)
{
System.out.println(ae.getActionCommand());
}
});
Questo è un problema di sicurezza perché si stanno ottenendo password come stringa che è immutabile, piuttosto che un char[]
Ogni volta che un comando di azione esplicita non è impostata, il testo il componente verrà inviato al costruttore ActionEvent
anche se non è stato impostato in modo specifico come comando di azione. Il parametro command
può essere null
, ma non è consigliabile che sia null
, pertanto il testo nel componente è il comando di azione per impostazione predefinita. Se non ci sono password nel JPasswordField
una stringa vuota sarà il comando di azione.
senza impostare alcun comando di azione per null
, se è null
, allora il testo nella JPasswordField
sarà il comando di azione. Il problema viene di nuovo.
Quindi vorrei raccomandare di impostare un comando di azione per il JPasswordField
senza lasciarlo così per ora fino a quando questo non viene corretto da Oracle.
JPasswordField jt=new JPasswordField("text");
jt.setActionCommand("");
jt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae)
{
System.out.println(ae.getActionCommand());
}
});
Thx per la risposta. Questo è buono a sapersi. – Yggdrasil
- 1. Rendering Java JPasswordField?
- 2. JPasswordField che codificano per l'ingresso
- 3. Come abilitare il taglio, copiare in JPasswordField?
- 4. regole di sicurezza di base con Firebase
- 5. UIButton con azione di mantenimento e azione di rilascio
- 6. Errore di sicurezza con iframe
- 7. Posso avere più contesti di sicurezza con sicurezza Spring?
- 8. VSTemplate con azione build
- 9. azione form con javascript
- 10. Azione per delegare: nuova azione o azione di lancio?
- 11. Link di azione "Security aware"?
- 12. Barra di azione non mostrata con AppCompat
- 13. Barra di azione Android Cerca con listview
- 14. azione delegato con zero Parametro
- 15. check_box_tag con azione label_tag click
- 16. Tipo di sicurezza con generici in Java
- 17. Come configurare JerseyTest con sicurezza di primavera?
- 18. Configurazione di sicurezza con Spring-boot
- 19. Test di integrazione con sicurezza a molla
- 20. Falso senso di sicurezza con `snprintf_s`
- 21. sicurezza Discussione di rendimento rendimento con Parallel.ForEach()
- 22. Azure TableQuery filo di sicurezza con Parallel.ForEach
- 23. "Blocca schermo" con password di sicurezza personalizzata
- 24. Sicurezza di sicurezza get Oggetto utente
- 25. Uso NodeJs con Firebase - Sicurezza
- 26. Autenticazione Websocket con sicurezza Spring
- 27. Comando di comando CTCP raw ACTION con C#
- 28. File zip con sicurezza passwd?
- 29. Barra di azione divisa Android con elementi di azione nella parte superiore e inferiore?
- 30. Scheda di azione Android
L'utilizzo di una stringa è un problema di sicurezza. Si prega di leggere http://stackoverflow.com/questions/8881291/why-is-char-preferred-over-string-for-passwords (la risposta di Jon Skeet) per i dettagli. –
+1 buona presa, suona come un insetto per me! La via d'uscita è impostare sempre l'actionCommand in modo tale che non ricolleghi al valore predefinito – kleopatra
+1 per una grande scoperta :-) Ora hai intenzione di segnalarlo a 'Java Oracle' o no? –