我想开始一个新项目,我发现的第一个问题是我的 mysql 连接数据的安全性。
我想知道是否可以配置软件来选择数据库服务器;出于这个原因,有必要将连接信息(用户、密码、数据库名)存储在某种文件(xml、bin、...)中,但这并不安全,由于缺乏加密,每个人都可以查看。
有没有一种简单的方法来保护这些敏感信息,或者我必须为此编写自己的加密机制?
如果我必须自己编写一个,是否有正确的指导方针?
我想开始一个新项目,我发现的第一个问题是我的 mysql 连接数据的安全性。
我想知道是否可以配置软件来选择数据库服务器;出于这个原因,有必要将连接信息(用户、密码、数据库名)存储在某种文件(xml、bin、...)中,但这并不安全,由于缺乏加密,每个人都可以查看。
有没有一种简单的方法来保护这些敏感信息,或者我必须为此编写自己的加密机制?
如果我必须自己编写一个,是否有正确的指导方针?
应用程序配置中的连接字符串是一种非常常见的场景。通常,您将这些值保存在名为app.config
or的文件中web.config
。
查看MSDN 帮助站点。
您要查找的部分称为使用受保护的配置加密配置文件部分
不,您不需要为它编写自己的加密,.NET 已经有了加密。
只需使用 Rijndael (AES) - 加密。
导入命名空间:using System.Security.Cryptography;
然后使用类:Rijndael Class
并看看这个线程:如何使用密码生成 Rijndael KEY 和 IV?正确/安全地使用加密。
例子:
private static byte[] EncryptString(byte[] clearText, byte[] Key, byte[] IV)
{
MemoryStream ms = new MemoryStream();
Rijndael alg = Rijndael.Create();
alg.Key = Key; //Look at the linked Stackoverflow-Thread
alg.IV = IV; // on how to create Key and IV
CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(clearText, 0, clearText.Length);
cs.Close();
byte[] encryptedData = ms.ToArray();
return encryptedData;
}