Sto scrivendo un'applicazione che consente agli utenti di accedere ai database attraverso la rete. Attualmente l'utente inserisce i dettagli del database in un modulo che viene successivamente utilizzato per stabilire una connessione JDBC. I dettagli che ottengo sono (1) nome host del database, (2) username, (3) password, (4) alcuni altri parametri di configurazione. Oltre a questo, ci sarà una serie di query predefinite che verrebbero eseguite sul database richiesto dall'utente. Genero al volo la stringa di connessione jdbc, creo una connessione ed eseguo la query richiesta. Prima di iniziare a colpire, so che questa non è una buona pratica e molto poco sicura.
Non sono riuscito a trovare alcuna domanda che sia direttamente rilevante. Ho trovato questa risposta che dice ripete il mio pensiero ma non si occupa di questo scenario.
Ecco una spiegazione del problema (caso d'uso):
- Un utente con privilegi elevati può fornirmi i dettagli della connessione al database remoto / target che verrebbero crittografati.
- L'utente con privilegi regolari o con privilegi bassi non può aggiungere, vedere o modificare questi dettagli
- Ci saranno più database target . Il numero non può essere predeterminato.
- La logica del mio programma decide a quale DB inviare la query. Le query saranno solo select query.
Un altro potenziale problema è la gestione di più connettori jdbc (considerare oracle, mysql, mssql ecc.)
Quale soluzione proponesti che consente un modo efficace per connettersi a più database con i rispettivi driver jdbc senza compromettere la sicurezza dei database target ? C'è un modo per autenticare le applicazioni web come utilizzare OAuth o certificati?