Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    49

    JAVA: Cifrare una password in un database

    Salve,
    come sempre questo forum è la mia ultima spiaggia quando ho un problema che non è facile da risolvere.
    Praticamente ho un programma di un gestionale aziendale completato ma ho il problema che la password degli utenti è visibile in chiaro dal database e questo credo che è un problema! Esiste un modo facile per risolvere tutto ciò considerando che ho tabelle del db già con dati e lavoro già finito?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    un modo, quello classico, è di conservare l'hash (md5, sha, quel che ti pare) della password. La maggior parte dei database gestisce in automatico la cosa.

    Vantaggio evidente: dall'hash non si risale tanto facilmente alla password in chiaro.

    Svantaggio: quando vuoi recuperare una password, l'unica possibilità che hai è settarne una nuova ed inviarla all'utente. Sarà quest'ultimo poi a cambiarla.

    La complessità aggiuntiva è pari a zero.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    49
    grazie per la risposta velocissima, questo algoritmo mi sembra perfetto posso chiederti se hai un abbozzo di codice java?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non c'è niente da fare in java, oltre a riscrivere qualche query.

    Quel che devi fare è mettere mano alla tabella utenti e modificarla in modo da "hashare" le password presenti.

    Poi quando esegui una query per verificare se un utente c'è o meno, invece di farla così
    codice:
    SELECT * FROM utenti WHERE nome_utente = 'nome_passato_da_form' AND password = 'password_passata_da_form'
    avrai una query del genere (esempio con MD5)
    codice:
    SELECT * FROM utenti WHERE nome_utente = 'nome_passato_da_form' AND password = MD5('password_passata_da_form')
    l'esempio di query è basato su database MySQL (almeno come sintassi). Documentati sulle reali potenzialità del database che andrai ad utilizzare per scrivere le query appropriate.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    49
    ah perfetto, ancora meglio. Ma poi per recuperarla al momento del login? Prelevo la password dall'utente tramite jTextField e poi come faccio a confrontarla con quella del database?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    guarda che la query te l'ho scritta...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    49
    Ah adesso credo di aver capito, quando un utente si registra al database:

    codice:
    PreparedStatement pstmt = c.prepareStatement(INSERT INTO utenti" +  "(USER,PASSWORD) values (?,?))
    codice:
    pstmt.setString(2, "MD5"+"("+"password"+")");
    mentre per prelevare uso la tua query ovvero:

    codice:
    SELECT * FROM utenti WHERE nome_utente = 'nome_passato_da_form' AND password = 'password_passata_da_form'

    E' giusta la sintassi usata per l'inserimento?

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    hai provato? non fai prima a provare invece che chiedere se va bene per ogni cosa?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    49
    ehi se c'è un forum di discussione è per confrontarsi, magari non bisogna necessariamente provare conviene chiedere se ti risponde uno che ha più esperienza di te ci arrivi prima alla soluzione evitando tentativi perditempo, non sei d'accordo?
    In ogni caso ti ringrazio per l'assistenza, ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.