こんにちは、java から mysql に安全にリンクする方法に興味があります。私が理解できない唯一のことは、パスワードをプレーンテキストから遠ざける方法です! どんな助けも素晴らしいです。
4 に答える
MySQL Connector/J 8.0 ドキュメントのこのセクションでは、SSL とクライアント証明書を使用して JDBC 接続を保護する方法について説明します。そうすれば、パスワードをまったく使用する必要がなくなります。
データベース接続にはJDBCを使用します。の限り
パスワードを平文にしない
プレーンテキストのパスワードがどこかにある場合、どのように接続することを期待しますか? 生成された 128 ビットのパスワードを使用して、それを暗号化するだけです。プロジェクトの一部ではないプログラムがロードするプロパティファイルがあり、そこから取得することはできますか?
もう 1 つの方法は、パスワードを完全にバイパスする SSH 認証を使用することです。
MessageDigest Classのドキュメントを見てください:
この MessageDigest クラスは、MD5 や SHA などのメッセージ ダイジェスト アルゴリズムの機能をアプリケーションに提供します。メッセージ ダイジェストは、任意のサイズのデータを受け取り、固定長のハッシュ値を出力する安全な一方向ハッシュ関数です。
呼び出しgetInstance("MD5")
て、使用できる MD5 メッセージ ダイジェストを取得します。
まあ、それはそれほど難しいことではありません。MYSQL コネクタをダウンロードしてパスに追加し、次のように PreparedStatement を起動するだけです。
Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager
.getConnection("jdbc:mysql://localhost/dbname?"
+ "user=myusername&password=mypassword");
PreparedStatement preparedStatement = connect
.prepareStatement("select * from employees");
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
//display text
}
preparedStatement.close();
connect.close();
その後、resultSet.getString() などを実行して必要な値を取得し、列が多すぎてテーブルが揮発性である場合に、それらを必要なものにキャストできます。そうでない場合は、getInteger()、getDouble() などを使用できます。
ここでもっと調べてください:
http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html
これで、ハッシュ戦略を使用してパスワードをハッシュする、つまりマスクすることができます。値を取得するために、現在のコードがリンクしている別のパッケージにこのコードを含めることができます。