Modo sicuro per salvare la password nel file di configurazione

8

Sto sviluppando un'applicazione desktop e ho richiesto la connessione a un server di database MySQL remoto, attualmente salvo tutte le informazioni (IP del server, porta TCP, nome utente, password, nome del database) necessarie per la connessione in una chiamata al file di configurazione app_config.property .
Mi rendo conto che questo non è un modo sicuro di fare le cose e mi piacerebbe conoscere il modo più sicuro e professionale per conservare dati sicuri come questo.

L'ho sviluppato in Java 7.0; la mia intenzione è di eseguirlo su Windows 7 e su Ubuntu Linux.

    
posta dilee 14.10.2015 - 06:19
fonte

5 risposte

3

I dati memorizzati in un file di testo rimangono in chiaro formato a meno che non si cripta quel file stesso.

Come diceva l'altro, meglio memorizzare le proprie credenziali nel database MySQL stesso. Hash e salate la vostra password (e perché non usare anche il pepe?)

Link utili con ottime risposte:

  1. Come password di hash sicure?
  2. Come conservare il sale?
  3. Qual è lo scopo di un Pepper?

Modifica

Dopo i tuoi commenti:

  • O vuoi fare la stessa cosa di Wordpress, Joomla e altri famosi CMS: crea una tabella separata in cui puoi memorizzare tali informazioni.
  • O forse stai ospitando la tua applicazione web su un server su cui sei limitato per il numero di DB e tabelle all'interno di un DB che sei autorizzato a creare: in tal caso, puoi creare un file di configurazione PHP (invece di un file di testo) in cui memorizzi tali informazioni e segui le buone pratiche in tali situazioni (come la protezione della cartella in cui si trova questo file con un file .htaccess )
risposta data 14.10.2015 - 08:40
fonte
3

Se possibile, non conservare il nome utente e la password nel file di configurazione, chiedere all'utente di fornire un nome utente e una password quando aprono l'applicazione e creare un accesso per l'utente sul database e fornire solo all'utente il set minimo delle autorizzazioni alle tabelle db di cui hanno bisogno per l'esecuzione dell'applicazione.

link

    
risposta data 14.10.2015 - 07:58
fonte
1

Non esiste un modo sicuro per farlo. Puoi offuscare, nascondere o fare ciò che vuoi, ma se l'utente / password è in un file di configurazione o all'interno del codice non sarà mai sicuro. Qualcuno può sempre accedere ai dati / eseguibili e ottenere l'utente / password, l'unica differenza è la difficoltà di ottenere quell'informazione (basta leggere un file o dover annullare l'engeneer del codice). L'unico modo sicuro è avere l'utente che introduce i dati.

    
risposta data 14.10.2015 - 08:53
fonte
1

Prendi l'applicazione web PHP media, come Wordpress, e salva l'accesso Mysql in chiaro. Ovviamente l'utente medio non può vederlo, solo gli utenti che hanno accesso al codice.

Quello che sto cercando di dire è che se ciò potesse essere fatto altrimenti, probabilmente lo farebbe.

È possibile configurare un servizio web che interagisca con il database e limitare l'accesso e i diritti al database in modo più preciso, ma non sono sicuro che ciò migliori realmente la sicurezza e non ho il tempo di pensarlo.

È possibile limitare i diritti del database per tabella a qualsiasi cosa sia necessaria: selezionare, aggiornare, eliminare e / o inserire.

    
risposta data 14.10.2015 - 10:32
fonte
1

l'offuscamento del codice lo farebbe bene, non userei un file di configurazione in puro testo.

ma se si desidera un file di configurazione, è possibile avere file crittografati in java, io stesso ho scritto alcune applicazioni di crittografia utilizzando AES e PPK (RSA). crittografare il file è possibile crittografare il file con una chiave che solo il codice dell'applicazione saprà o è possibile utilizzare ID e sali dell'hardware in modo da non poter spostare il file di configurazione su computer diversi.

utilizzando un flusso di byte puoi crittografare e decodificare al volo senza modificare i file a meno che tu non voglia.

Questo sarebbe il mio suggerimento per questo specifico scenario.

    
risposta data 14.10.2015 - 11:36
fonte

Leggi altre domande sui tag