2

ユーザーがログインすると、データベースに関連するすべての機能を持つdbclassのパブリック静的メンバーである接続'conn'を開きます。その後、アプリケーションが閉じられるまでconnは開いたままになります

アプリケーションのパフォーマンスを測定可能に低下させることはありませんが、データベースクエリのパフォーマンスを大幅に向上させます。

セキュリティ上の問題はありますか?データベースが一元化されており、2台または3台のPCが独立したアプリケーションでデータベースを使用している場合、ログイン時に接続を開くことにより、どのようなセキュリティの問題が発生する可能性がありますか?

または、将来直面する他の問題はありますか?

最初のコメントへの返信で編集

timespan.totalmillisecondsで確認しました。接続がすでに開いているときにクエリを実行するよりも、クエリを開いて実行する場合の時間は2倍未満です。

編集---実際の回答が必要です

正当な理由のある人がセキュリティの問題はないと私に言った場合、または正当な理由のある人が「はい」と言った場合、これが主要なセキュリティの問題です。それは他の人の応答を待った後に受け入れられる答えになります。

グーグル検索で、私の質問のポイントとなる記事/回答は見つかりませんでした。

4

2 に答える 2

2

私が考えることができる最初の問題は、何らかの理由で接続が閉じられる場合です(ファイアウォール?)。

接続を開いたままにしていて、何らかの理由で接続が強制的に閉じられた場合、再び使用できるようにするには、プログラムを再起動する必要があります。ただし、クエリを実行する必要がある場合にのみ接続を開く場合は、もう一度閉じます。接続が閉じられていても、新しいクエリを作成する必要がある場合、プログラムは再接続を試みます。

これは、単一のデータベースにアクセスする単一のコンピューターについて話していることを前提としています。より多くの人がアクセスできるデータベースについて話している場合、接続を閉じないと、ある時点でホストに問題が発生します (最大接続数に達します)。ほんの数秒で接続数が最大に達するような攻撃を受けやすいことは言うまでもありません.

于 2012-08-24T11:37:42.750 に答える
0

リスクは、接続文字列が盗まれる可能性があることです。SqlConnection オブジェクトをプライベートとして宣言したとしても。ユーザー権限を最小限に抑える必要があります。また、接続文字列を暗号化することもできます。しかし、いずれにせよ、それは安全ではないと思います。

于 2012-08-24T11:19:41.140 に答える