Could I directly read the data from these files without knowing my MySQL username/password?
Hai scommesso.
I am considering to encrypt and decrypt the credentials in the application and store only the encrypted version in the DB, but is this necessary?
Non archiviare le password in chiaro nel tuo database e non utilizzare la crittografia simmetrica (se lo fai, quindi quando la chiave viene rubata insieme alle password crittografate, hai perso).
Il modo di memorizzare le password (ovunque - non importa se le memorizzi in file flat, database o da qualche altra parte ...) è quello di salarle e cancellarle usando una funzione di hash sicura. Una funzione di hash prende una stringa di input e restituisce una stringa a lunghezza fissa di lunghezza fissa come output. Memorizzi questa stringa dall'aspetto casuale nel tuo database.
Quando si desidera verificare se qualcuno ha inserito la password corretta, si esegue la password tramite la funzione hash e si controlla la stringa risultante con la stringa nel database.
In questo modo, le password non sono esposte (le funzioni di hash sono funzioni a senso unico, il che significa che non è possibile invertire la funzione di hash senza uno sforzo tremendo).
Si noti che il semplice hashing della password non è sufficiente. È necessario concatenare un valore salt random alla password prima di eseguire l'hashing e quindi memorizzare sia l'output della funzione hash AND il valore salt nel database. È necessario fare questo per diversi motivi:
1. Se non lo fai, le password identiche daranno un identico
valore hash
2. Qualcuno con un po 'di tempo sulle sue mani potrebbe precalcolare un tavolo di
password hash (tabelle arcobaleno). Usando un valore di sale lo fa
operazione molto più costosa.
Ci sono funzioni di hash disponibili per le password di hashing, per esempio bcrypt. Usa uno di loro invece di rotolare il tuo. NON utilizzare una funzione di hash standard come md5 o sha1. Sono tutti progettati per essere veloci, il che è l'opposto di quello che si desidera in una funzione di hash della password (per rendere più violenti gli attacchi di forza bruta sul file della password quando viene rubato).