Jak mówi tytuł, szukam sposobu na znalezienie tablicy char [] do nawiązania połączenia JDBC zamiast tworzenia nowego obiektu String z char [] array i używając tego do ustanowienia połączenia.Problem przy ustanawianiu połączenia z bazą danych z tablicą znaków zamiast z ciągiem znaków
Ponieważ tablice char [] to more secure than Strings in java, chciałem, aby wszystko było tak bezpieczne, jak to możliwe, gdy mam do czynienia z moimi pulami JPasswordFields.
W tym konkretnym przypadku biorę zawartość tablicy char [] z pola JPasswordField i próbuję ustanowić połączenie JDBC z bazą danych. Działa to doskonale, ale muszę utworzyć nowy obiekt String z tablicy char [], aby wywołać metodę getConnection.
Czy jest jakiś sposób, aby zapewnić co najmniej pewne bezpieczeństwo to zrobić, czy jestem po prostu zmuszony do utworzenia obiektu String i nadal go używać w metodzie?
To jest mój kod:
/**
* Construct a new DataManager object with it's own
* connection to the database.
*
* @param ipAddress The IP address to the server on which MySQL is running.
* @param port The port to use when connecting to MySQL.
* @param databaseName The database name of the database to connect to.
* @param username The username for a MySQL account with access to the specified database.
* @param password The password for the MySQL account specified by the specified username.
*/
public DataManager(final String ipAddress, final String port, final String databaseName, final String username, final char[] password) throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://" + ipAddress + ":" + port + "/" + databaseName + "?noAccessToProcedureBodies=true"; //?noAccessToProcedureBodies=true is required for using the stored procedures.
dbConnection = DriverManager.getConnection(url, username, new String(password));
}
Przepraszamy za formatowanie, ale linie są trochę długo i zawinąć.
Here's the Java docs for the DriverManager class, którego używam. Sprawdziłem i wydaje się, że nie ma metody, aby użyć char[]
zamiast String
i to właśnie podpowiadało ten post.
Dzięki za pomoc/wskazówki.
Powiązane: [Łańcuch znaków lub tablica znaków dla hasła podczas korzystania z JDBC?] (Http://stackoverflow.com/questions/20342389/string-or-char-for-password-when-using-jdbc) – Pshemo
Być może chcesz kodereview end-to-end, dzięki czemu można dowiedzieć się, gdzie istnieją luki w zabezpieczeniach – Drew
@Pshemo Po szybkim zapoznaniu się z tym linkiem, wygląda na to, że głównie omawiają one, dlaczego nie należy przechowywać hasła jako ciągu znaków, a zamiast tego użyj tablicy char []. Istnieje jedna sugestia, aby użyć puli połączeń/menedżera, a następnie zezwolić tylko na dostęp do hasła, ale to nadal oznaczałoby, że hasło jest przechowywane, aby można je było ponownie wykorzystać, prawda? – Valkryst