我想开始一个新项目,我发现的第一个问题之一就是我的mysql连接数据的安全性。
我想知道是否可以配置软件来选择数据库服务器;因此,有必要将连接信息(用户,密码,数据库名称)存储在某种文件(xml,bin,...)中,但这不是很安全,并且由于缺乏加密,每个人都可以查看。
是否有一种简单的方法来保护这些敏感信息,还是我必须为此编写自己的加密机制?
如果我必须自己写一个,是否有一个准确的指导方针?
答案 0 :(得分:2)
应用程序配置中的连接字符串是一种非常常见的情况。通常,您将这些值保存在名为app.config
或web.config
的文件中。
您要查找的部分称为使用受保护配置加密配置文件部分
答案 1 :(得分:1)
不,你不需要为它编写自己的加密, .NET确实已经加密了。
只需使用Rijndael(AES) - 加密即可。
导入名称空间:using System.Security.Cryptography;
然后使用课程:Rijndael Class
并查看此主题:How to generate Rijndael KEY and IV using a passphrase?以正确/安全地使用加密。
示例:
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;
}