如何在C#应用程序中安全地存储数据库登录名和密码?

我有一个C#应用程序需要连接到SQL数据库以不时发送一些数据。 如何安全地存储用于此作业的用户名和密码?

有一篇关于如何在.Net中保护连接字符串的MSDN文章 。

您可能希望使用受保护的配置 。

尽可能使用集成Windows身份validation。 它需要关闭您的应用程序并让Windows处理它。 使用Windows身份validation而不是SQL身份validation被认为是最佳做法。

阅读此接受的答案: 为asp.net应用程序连接sql server(Windows身份validation与SQL Server身份validation)的最佳方法

另见: http : //www.mssqltips.com/sqlservertip/1831/using-windows-groups-for-sql-server-logins-as-a-best-practice/

并且: http : //www.greensql.com/content/sql-server-security-best-practices

顺便提一下,如果这是问题所暗示的“工作”,它可能是简单的Windows服务或计划任务的理想选择,这两者都可以在特定的安全上下文中运行(即作为特定的Windows用户)。

在app.config或web.config中,然后使用.net加密提供程序对它们进行加密

有关更多信息,请访问http://msdn.microsoft.com/en-us/library/dx0f3cf2%28v=vs.80%29.aspx

使用受保护的配置加密配置信息

http://msdn.microsoft.com/en-us/library/53tyfkaw%28v=vs.80%29.aspx

不确定您的确切要求,但首先,您必须加密密码。 此外,在传输此类敏感信息时,请考虑使用安全连接。

将加密版本存储在连接字符串中,并在解密密码后以编程方式形成连接字符串。

您可以使用您选择的任何加密机制 – 从简单到复杂。

您可能需要查看RijndaelManaged密钥,这是一个非常安全的对称加密密钥。 这里可以找到关于这些信息(和教程)的好文章;

http://www.obviex.com/samples/Encryption.aspx

您可以对密码使用加密和加密算法,并通过创建用户的人员和创建的日期时间记录您的用户信息,并将其保存在数据库中。 即使有人更新或编辑数据库中的日志信息。

将stirng转换为md5的代码

using System.Text; using System.Security.Cryptography; public static string ConvertStringtoMD5(string strword) { MD5 md5 = MD5.Create(); byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(strword); byte[] hash = md5.ComputeHash(inputBytes); StringBuilder sb = new StringBuilder(); for (int i = 0; i < hash.Length; i++) { sb.Append(hash[i].ToString("x2")); } return sb.ToString(); }