2

あらかじめ決められたユーザー名とパスワードでSqlServerに接続するプログラムがあります。元:

static void Main(string[] args)
{
    string UserName, Password;
    UserName = "Name";
    Password = "Pass";

    SqlConnection conn = new SqlConnection("...");
}

パスワードを逆コンパイルから保護するにはどうすればよいですか?

4

3 に答える 3

15

そもそもそうしないでください。セキュリティシステムは、ユーザーに不正なコードを実行させようとする攻撃者からユーザーを保護するように設計されています。それはあなたがやろうとしていることであるそのユーザーからあなたのプログラムを保護するように設計されていません。

ユーザー名とパスワードを実行可能ファイルにハードコーディングすることは、さまざまな理由から最悪の方法です。まず、データベースへのアクセスを、許可された人ではなく、プログラムを持っている人に許可するためです。次に、ユーザー名またはパスワードを変更する必要がある場合は、プログラムを再発送する必要があることを意味します。第三に、パスワードが取得され、一度だけ取得する必要がある場合、どうなりますか?アクセスを攻撃者だけに制限する方法はありません。

はるかに優れた解決策は、すべてのユーザーが自分のアカウントを持っていることを要求することです。パスワードを入力させます。または、データベースアクセスを、Windows認証などの他のIDおよび承認スキームと統合します。

于 2012-04-29T13:55:34.677 に答える
3

このプログラムが常に同じコンピューターで実行される場合は、この情報を構成ファイルのconnectionStringsセクションに配置し、DPAPIを使用して暗号化することができます。

于 2012-04-29T13:06:15.153 に答える
1

パスワードを暗号化することは1つのことです。データベースに専用のユーザーがいて、データベースオブジェクトに必要な権限のセットだけを持っていることは、もう1つ、私に言わせればはるかに重要です。

于 2012-04-29T13:49:49.503 に答える