28

私が開発しているWebアプリケーションでは、データベースに接続するときに現在単純なソリューションを使用しています:

Connection c = DriverManager.getConnection("url", "username", "password");

これはかなり危険です。攻撃者がソースコードへのアクセスを取得すると、データベース自体へのアクセスも取得します。ソースコードにデータベースパスワードをプレーンテキストで保存せずに、Web アプリケーションをデータベースに接続するにはどうすればよいですか?

4

6 に答える 6

17

接続文字列を Web.config または App.config ファイルに保存し、それを保持するセクションを暗号化できます。これは、以前のプロジェクトで接続文字列を暗号化するために使用した非常に優れた記事です。

http://www.ondotnet.com/pub/a/dotnet/2005/02/15/encryptingconnstring.html

于 2008-09-03T23:32:35.090 に答える
5

.NET では、慣例として、接続文字列を別の構成ファイルに格納します。

その上で、構成ファイルを暗号化できます

Microsoft SQL Server を使用している場合、ドメイン アカウントを使用してアプリケーションを実行し、データベースへの信頼された接続を使用する場合、これはすべて無関係になります。その場合、接続文字列にはユーザー名とパスワードは含まれません。

于 2008-09-03T23:34:10.170 に答える
1

.NET プログラマーには、次の手法をお勧めします。

  • 構成ファイルでパスワード\接続文字列を暗号化する
  • クライアントとサーバー間の信頼できる接続をセットアップします (つまり、Windows 認証を使用するなど)。

CodeProject の役立つ記事を次に示します。

于 2008-09-03T23:34:06.100 に答える
1

接続プールを介してサーバーによって接続を管理する必要があるという点を見逃していない限り、したがって、接続資格情報はアプリではなくサーバーによって保持されます。

これをさらに進めて、私は通常、(DMZ 内の) フロントエンド Web アプリケーションが (ドメイン内の) Web サービスを介してのみ DB と対話するという規則を構築し、完全な分離と強化された DB セキュリティを提供します。

また、基本的に必要なもの以上の権限を db アカウントに付与しないでください。

もう 1 つの方法は、ストアド プロシージャを介してすべての操作を実行し、アプリケーション ユーザーにこれらのプロシージャへのアクセスのみを許可することです。

于 2008-09-03T23:47:12.980 に答える
1

MS SQL を使用していると仮定すると、ソース コードのどこにもユーザー名/パスを必要としない Windows 認証を利用できます。それ以外の場合は、app.config + 暗号化を推奨する他のポスターに同意する必要があります。

于 2008-09-03T23:59:34.603 に答える
0
  1. OS ユーザーの作成
  2. そのユーザーのパスワードを O/S 環境変数に入れます
  3. そのユーザーとしてプログラムを実行します

利点:

  1. root またはそのユーザーのみが、そのユーザーの O/S 環境変数を表示できます
  2. 再起動に耐える
  3. 誤ってパスワードをソース管理にチェックインすることはありません
  4. ファイルのアクセス許可を台無しにすることを心配する必要はありません
  5. 暗号化キーの保管場所を気にする必要はありません
  6. ワークス x プラットフォーム
于 2013-12-23T19:20:28.200 に答える