web-dev-qa-db-ja.com

SQL接続文字列c#を暗号化する

SQL 2005サーバーに接続するc#アプリケーション(asp Webページではない)を作成しました。私のソースコードでは、このsql-serverのパスワードとユーザーIDはConnectionStringにプレーンテキストでコード化されています。

SqlConnection con = new SqlConnection();
con.ConnectionString = 
         "Data Source=server1;"+
         "Initial Catalog=mydatabase;"+
         "Integrated Security=no;"+
         "User ID=admin;Password=mypassword;";
con.Open();

パスワードまたは接続文字列全体を暗号化する簡単な方法はありますか?私のツールを逆アセンブルする他の人はパスワードを見ることができませんか?

ありがとう

16
Tobi

接続文字列を構成ファイルに保存し、そのセクションを暗号化する必要があります。 http://www.4guysfromrolla.com/articles/021506-1.aspx または http://msdn.Microsoft.com/en-us/library/89211k9b%28VS)を参照してください。 80%29.aspx

9
Jonas Lincoln

それを行うには2つの方法があります。

1)Configuration Secure Sectionを使用して、ソースコードから接続ストリームを暗号化および復号化できます。

try
    {
        // Open the configuration file and retrieve 
        // the connectionStrings section.
        Configuration config = ConfigurationManager.
            OpenExeConfiguration(exeConfigName);

        ConnectionStringsSection section =
            config.GetSection("connectionStrings")
            as ConnectionStringsSection;

        if (section.SectionInformation.IsProtected)
        {
            // Remove encryption.
            section.SectionInformation.UnprotectSection();
        }
        else
        {
            // Encrypt the section.
            section.SectionInformation.ProtectSection(
                "DataProtectionConfigurationProvider");
        }
        // Save the current configuration.
        config.Save();

        Console.WriteLine("Protected={0}",
            section.SectionInformation.IsProtected);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }

2)Enterprise Library Data Access Application Blockを使用して、RSAProtectedConfigurationProviderまたはDPAPIProtectedConfigurationProviderを使用して暗号化を実行できます。

完全な記事については、-> http://msdn.Microsoft.com/en-us/library/89211k9b(VS.80).aspx にアクセスしてください。

4
Bhaskar

いいえ、あなたはそれを難し​​くすることしかできません

必要なテーブル/手順にのみアクセスできる特別なデータベースログインをアプリケーションに使用させることをお勧めします。

2
adrianm

Web.configと同じ方法で、app.configで セクションを暗号化 できます。 MSはそれを 保護された構成 と呼びます。暗号化されたデータとキーの両方が同じマシン上にあるため、それは困難になるだけですが、理論的にはデータにアクセスすることは不可能ではありません。

0
Jonas Elfström