Sto lavorando a un progetto web che si connetterà a un database. Per questo, dovrò memorizzare il login / password dell'utente del database in chiaro (crittografato in modo simmetrico) per poter riconnettersi per ogni azione (come creare una tabella, aggiungere voci, ecc.) Senza dover chiedere sempre queste credenziali.
Sono consapevole che archiviare la password in chiaro è troppo insicura e fuori dalle mie possibilità.
Ecco cosa ho pensato, potresti dirmi se sarebbe corretto o / e se c'è una possibilità migliore? grazie:)
L'applicazione verrà divisa in due parti indipendenti: il frontend e il backend.
Quando l'utente effettua il login tramite il frontend, il login e la password vengono inviati in chiaro (raccomanderò l'uso di HTTPS). Il backend proverà a connettersi al database, se è riuscito, crittografa il login e la password usando Blowfish e li restituisce al frontend.
Per qualsiasi richiesta successiva, il frontend dovrà inviare il login / password crittografato, senza mai conoscere quello chiaro, solo quello crittografato.
Se qualcuno ottiene l'accesso ai dati di questo utente (ad esempio XSS), sarà solo in grado di accedere alle credenziali crittografate, non a quelle chiare.
Se un utente malintenzionato può eseguire un MITM, solo il primo accesso è rischioso, tutte le richieste successive saranno con le credenziali crittografate.
Ho pensato di usare i cookie / sessione, ma è lo stesso: i valori sono memorizzati in chiaro o codificati Base64. Non proprio sicuro!
L'idea di Blowfish deriva da come PhpMyAdmin lo usa (alias, lo stesso). Inoltre, anche su PhpMyAdmin, la parte di login viene anche inviata in chiaro.
Pensi che la mia implementazione sia corretta o hai qualcosa di meglio da suggerire? Mi piacerebbe davvero fare qualcosa di più sicuro possibile. Finora, solo la parte di login mi infastidisce: /
Grazie per le tue idee.
Modifica
Apparentemente, la mia domanda non è abbastanza chiara, cercherò di essere più esplicito :
Voglio creare un'alternativa a PhpMyAdmin. PhpMyAdmin è un middleware che si connette a un server MySQL fornendo l'accesso / password di qualsiasi utente in quel database. Le credenziali richieste nel modulo web sono quelle utilizzate per il database MySQL.
Quindi, durante l'intera sessione dopo che l'utente ha effettuato l'accesso, PhpMyAdmin memorizza il login / password nella sessione crittografando la password usando Blowfish.
Questo NON PUO essere evitato, perché ogni volta che l'utente fa una richiesta (come la creazione di una tabella, l'inserimento di dati, l'aggiornamento o l'eliminazione di dati), PhpMyAdmin BISOGNA riconnettersi a quel database usando le credenziali fornite all'accesso, quindi eseguire l'azione richiesta dall'utente.
È quindi impossibile per PhpMyAdmin memorizzare solo un hash delle credenziali perché non sarà in grado di riconnettersi al database durante le richieste successive fatte da quello stesso utente.
Sono consapevole che memorizzare la password che può essere recuperata in chiaro è non è affatto una buona soluzione , e questo è il motivo della questa domanda: non dirmi che l'hashing è migliore, perché è assolutamente inutile nel mio caso, ma per sapere se esiste un'alternativa migliore rispetto alla crittografia simmetrica + HTTPS per mantenere una password necessaria per ogni azione eseguita dall'utente.