0

実際には、Javaからのタイプ4 db接続によって、次のようにOracleデータベースに接続しています。

dbconnection.javaで、私は以下に書いています:

  Class.forName("oracle.jdbc.driver.OracleDriver"); 
   con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:database host name","database user name", "database user password"); 
  return con;

これらの3つのフィールド(データベースホスト、データベースユーザー名、データベースユーザーパスワード)を次のようにJavaクラスdbconnection.javaに暗号化された形式で書き込む方法はありますか?

  Class.forName("oracle.jdbc.driver.OracleDriver"); 
   con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:wrtwtr#$%$_rfwrw","regfwerfgwf", "%%5frfr^&%$%4"); 
  return con;

データベース接続中に、これらの暗号化されたフィールドは復号化され、実際の名前でOracleデータベースに接続されます

次に、サーブレットで次のように呼び出します。

  dbconnection db= new dbconnection();

助けてください

4

3 に答える 3

3

私はそれをする方法を知りません。

しかし、これを行うと何が達成されるかもわかりません。確かに、ユーザー名とパスワードは明確に表示されていませんが、これらの暗号化された文字列にアクセスした悪意のある人は、プログラムと同じようにそれらを使用できます。

于 2012-04-28T08:10:01.180 に答える
1

接続の詳細を隠そうとするのではなく、外部から制御されるアプリケーション(またはアプリケーションのインスタンス)がデータベースにアクセスできるようにするための安全な方法を提供する必要があります。

APIは基本的に、データベースと制御できないアプリケーションの間の中間層です。たとえば、Facebookでは、データベースへの直接アクセスを許可するのではなく、開発者がAPIを介してデータにアクセスできるようにします。これは、アプリケーションを認証できることを意味し(したがって、アプリケーションが責任を負うことができることを意味します)、アプリケーションが表示および編集できるものとできないものを明示的に制御できます。

基本的に、APIを使用すると、データベースを保護すると同時に、誰が何をしているのかを追跡できます(ただし、通常、保護の側面が主な目的です)。

ただし、アプリケーションを使用している人を信頼する場合は、心配しないほうが簡単な場合もあります。たとえば、有能で善意のある人々の小さな会社で働いている場合、アプリケーションがデータベースに直接接続できるようにするのが安全である可能性があります。

ただし、プログラムを一般の人々、または完全に完全に信頼していない大勢の人々に配布する場合は、どのような予防策を講じても、直接アクセスを許可しないでください。

クレデンシャルを暗号化する方法を理解していると仮定します。ある時点で、まだ接続を確立する必要があります。ユーザーが復号化/接続コードを取得し、接続を確立してから、その後に独自のコードを挿入すると、どうなりますか?突然、彼はあなたのデータベースにアクセスできるようになりました。最悪の場合、APIを使用すると、彼はAPIキーを盗み、制限された、追跡可能な、簡単に取り消すことができるアクセスを持つ可能性があります。

さらに、APIへのアクセスを許可している場合は、ユーザーに自分のやりたいことだけを許可します。最悪の場合、彼がAPIを直接使用する方法を理解した場合、彼ができることは、プログラムがとにかくできることだけです。

于 2012-04-28T09:03:03.497 に答える
0

暗号化されたデータをに渡すことDriverManagerはオプションではありません。
復号化された文字列をに渡す必要がありますDriverManager。したがって、どこかでユーザー名とパスワードを暗号化してから復号化しから、DriverManager
秘密鍵をどこに保存するかなど、他の問題が発生しますが、最初の防御策として、私の理解ではプレーンテキストを使用するよりも優れていますいくつかのセキュリティ要件があること。

使用しているOSについては言及していません。Windowsを使用している場合は、Windowsベースの認証を使用することをお勧めします(データベースへの接続は現在のWindowsユーザーに対して認証されます)。したがって、接続文字列にユーザー名とパスワードを指定する必要はありません。Oracleがこれをサポートしているかどうかを確認します(MS-SQLサーバーでのみ試しました。提供したリンクが役立つことを願っています)。
これは私見の最良の選択肢です。Linuxの場合、同等のものが必要です。

于 2012-04-28T08:22:01.283 に答える