我有一个需要连接到 SQL 数据库以不时发送一些数据的 C# 应用程序。如何安全地存储用于此作业的用户名和密码?
8 回答
有一篇很好的 MSDN 文章,介绍了如何保护 .Net 中的连接字符串。
您可能想要使用受保护的配置。
尽可能使用集成的 Windows 身份验证。它减轻了您的应用程序的负担,让 Windows 来处理它。使用 Windows 身份验证而不是 SQL 身份验证被认为是最佳实践。
阅读这个公认的答案:为 asp.net 应用程序连接 sql server(Windows 身份验证与 SQL Server 身份验证)的最佳方式
并且: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 密钥,它是一种非常安全的对称加密密钥。可以在此处找到有关此信息(和教程)的好文章;
您可以对密码使用加密和解密算法,并通过创建用户和创建用户的日期时间记录您的用户信息,并将其保存在数据库中。即使有人在数据库中更新或编辑记录该信息。
将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();
}