web-dev-qa-db-ja.com

JavaアプレットでJDBCを使用すべきではないのはなぜですか?

Javaアプレットでは、JDBC(Java Database Connectivity)の使用は推奨されていません。「セキュリティ上の理由から」と言われています。「セキュリティ上の理由」アプレットで使用されているJDBCがWebサイトのどこかに配置されていることを知った場合、潜在的に「悪意のある人」は何をしますか?アプレットを安全にするには、アプレットとの間にサーブレットを配置するのが賢明ですほとんどのプログラマーがそれをしていると思いますが、その理由を知りたいのです。

4
BMC

最も基本的なレベルでは、データベースサーバーは公共のインターネットに公開されるべきではありません。 Javaアプレットを実行しているランダムなユーザーがデータベースに直接アクセスすることを望む場合、これはデータベースがインターネット上の誰からの接続も受け入れるように構成されていることを意味します。その場合、攻撃者はあなたを攻撃することができます。最初にファイアウォールに侵入したり、内部ネットワークにアクセスしたりすることを心配することなく、自由にデータベースを使用できます。

Javaアプレットはクライアントマシン上で実行されるため、攻撃者がアプレットの動作を正確に把握できるので、データベースのユーザー名とパスワードを簡単に抽出できます。アプレットが機能するためには、データベースサーバーがインターネットに開かれている必要があることをすでに確立しているため、攻撃者はユーザーが必要なツールから使用できるユーザー名とパスワードを持っていることになります。アプレットが使用するデータベースアカウントでできること(アプレットのセキュリティを回避すること)は何でも可能ですが、特権を昇格させる攻撃を探すこともできます。

17
Justin Cave
  1. データベースをインターネットに公開する必要があるため

  2. アプレットがデータベースへの接続に使用されるパスワードにアクセスできるようにする必要があります。ハッカーはデバッガからそのパスワードを簡単に引き出すことができます

  3. ほとんどの人は異なる権限で異なるDBアカウントを使用することを考えていません

  4. 最初のリリース後にDB構造を簡単に変更することはできません

12
ratchet freak