Nascondere la password del database dall'application.properties

di il
5 risposte

Nascondere la password del database dall'application.properties

Buongiorno a tutti e buon 25 aprile

vorrei chiedervi un consiglio,

sto lavorando su un progetto personale che utilizza un database mysql

per connettermi utilizzo il file application.properties

tuttavia vorrei evitare di mettere la password del database in chiaro ma vorrei fare in modo che sia protetta

volevo chiedervi se potreste fornirmi un'indicazione o un articolo per capire come procedere

avevo letto su un articolo che bisogna utilizzare le variabili di ambiente

inserendo la password così: ${VARIABILE_AMBIENTE_PSW}

tuttavia prima di approcciare tale soluzione vorrei capire se è effettivamente questa la best practice da seguire perché mi sembra strano dover scomodare le variabili di ambiente del sistema operativo.

Inoltre ho visto che Git fornisce un file chiamato .gitattributes, vorrei capire se quel file può essermi di aiuto per nascondere la password.

vi ringrazio anticipatamente per qualsiasi consiglio vogliate darmi

buona giornata

Luca

5 Risposte

  • Re: Nascondere la password del database dall'application.properties

    Sembra una cosa "facile" MA non lo e'.

    ---

    Usare una variabile d'ambiene E' EQUIVALENTE a metterla su file! 
    E' RICUPERABILE con complessita' ZERO (lo puo' fare anche il bambino di 5 anni!)

    ---

    0) la tieni in chiaro, TANTO l'applicazione gira su una macchina SICURA

    1) non metti la password MA la richiedi ad ogni avvio dell'applicazione, 
    POI te la tieni in memoria in modo da non doverla richiedere piu' volte fino a che l'applicazione non viene chiusa. 
    Ovviamente SE la password e' SEMPRE la stessa, richiederla ogni volta o  salvarla su file E' LA STESSA COSA

    2) ASSEGNI UNA PASSWORD DIVERSA PER OGNI UTENTE, 
    in questo modo, tenerla in chiaro non e' un problema perche' e' la password dell'UNICO UTENTE che puo' accedere a quel computer, e quindi se SOLO LUI conosce la SUA password, non e' un gran problema

    2.1) poiche' la password e' diversa per ogni utente, e'una scelta dell'utente stesso decidere SE salvarla sul file oppure inserirla di volta in volta

    3) CIFRI la password, ma PRIMA DI USARLA la devi DECIFRARE. Questo diventa un INCUBO se la password deve essere cambiata.
    3.1) la CIFRI con una chiave di cifratura DIVERSA per ogni utente. Se prima era un incubo, ora e' un inferno :-)

    3.2) pero' CIFRARE una password con un meccanismo FISSO vuol dire che appena si conosce il meccanismo, il fatto di essere cifrata e'  EQUIVALENTE al fatto di essere in chiaro

    4) la password viene fornita dal SERVER, quindi non serve memorizzarla da nessuna parte. I meccanismi sono diversi, ad esempio mediante un TOKEN che non e' altro che una stringa CIFRATA contenente la password e magari un timestamp, in modo che la stringa sia diversa per OGNI utente

    ---

    OVVIAMENTE si possono pensare a soluzioni ancora piu' "incasinate".
    QUesto elenco non e' certamente esaustivo!

    ---

    Il problema e' SEMPRE LO STESSO: 

    SERVE? 
    Serve VERAMENTE?
    La complessita' aggiuntiva (ed il tempo per implementarla ed i relativi problemi che cio' indroduce) VALE lo sforzo?

    ---

    Per una password FISSA, NON HA SENSO spaccarsi la testa per inventare un meccanismo per "nasconderla": E' FISSA!
    Appena UNO ne viene a conoscenza, TUTTI ne vengono a conoscenza!!

    Meccanismi di protezione della password HANNO SENSO SOLO se esiste una password DIVERSA PER OGNI UTENTE.

  • Re: Nascondere la password del database dall'application.properties

    Ciao @migliorabile

    ti ringrazio moltissimo per la risposta e per avermi elencato le best practice più utilizzate

    effettivamente nel mio progetto al momento sono l'unico utente

    quindi potrei lasciarla anche così

    solo che questo progetto vorrei mostrarlo durante i colloqui tecnici e non vorrei che gli sviluppatori che valutano il codice dei candidati vedendo che ho messo una password in chiaro mi scartino a priori

  • Re: Nascondere la password del database dall'application.properties

    Usa un otp... Utile se il programma gira su web. In locale non ne vale la pena.

    La sicurezza della password spetta al suo proprietario. Io devo custodire i codici di accesso all' home banking non il mio sistema operativo o il mio programmatore.

    Visto che una password può essere carpita col binocolo si usa un otp verso il cellulare che è diventato la nostra scatola nera.

    Ma si può usare una mail, un sito, una telefonata... Il meccanismo è lo stesso: la pw viene generata al momento e si invia un codice da digitare per validarla. Codice che può anche arrivare per posta prioritaria (per assurdo) ma come ti è stato detto: serve tutta questa sicurezza?

  • Re: Nascondere la password del database dall'application.properties

    Ciao @sihsandrea, grazie mille per la tua risposta, proverò ad implementare l'otp.

    Riguardo alla tua domanda, molto probabilmente per la funzionalità finale del software tutta questa sicurezza non è strettamente necessaria.

    Tuttavia, poiché vorrei presentare questo progetto durante i colloqui tecnici, sto dedicando molta attenzione ai dettagli e alle best practice. Non vorrei rischiare che una mancata aderenza a una best practice o una negligenza di un dettaglio mi precludano opportunità, considerando che non sono più giovanissimo (ho 22 anni) e la mia esperienza lavorativa è di soli 3 anni come programmatore legacy (ho lavorato su tecnologie deprecate), le aziende potrebbero non essere molto interessate ad assumermi se non dimostro di saper lavorare con attenzione.

  • Re: Nascondere la password del database dall'application.properties

    @LucaDev, il fatto di NON aver implementato una funzionalita MA SAPERE che andrebbe fatto e COME farlo, e dirlo al colloquio, vale tanto quanto averlo fatto.

    Ovviamente SE l'esaminatore e' "competente"

Devi accedere o registrarti per scrivere nel forum
5 risposte