我使用Visual Studio 2010和Microsoft Access 2010使用C#编程语言开发桌面应用程序。
连接字符串是:
的connectionString =“提供者= Microsoft.ACE.OLEDB.12.0;数据 Source = | DataDirectory | \ KBank.accdb; Persist Security Info = False“
我在C#代码中给它密码如下:
public string GetConnectionStringByName()
{
string returnValue = null;
ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings["Info_Bank_Project.Properties.Settings.KBankConnectionString"];
if (settings != null)
returnValue = settings.ConnectionString + ";Jet OLEDB:Database Password=blablabla";
return returnValue;
}
我只在一个简单的“选择”查询中使用了项目中的数据库。
所以,关于安全问题.. 任何人都可以解密访问数据库或查看密码? 你有什么建议让任何人都难以看到数据库数据
答案 0 :(得分:3)
不,您的数据不安全,因为任何人都可以使用MSIL反编译器检查您的代码并从您的应用中检索您的连接字符串。在您的流程中,某些人可能会看到密码,无论是内存,反思还是其他内容,都会有一点。
如果您拥有的数据由您以外的人拥有,而不是在您的服务器上,那么您可以假设您无法再控制该数据。
现在,尽管如此,你可以通过加密数据库文件和模糊代码来使它们变得更难。
答案 1 :(得分:3)
这是一个小问题,我在这个问题上的经验可能对某人有所帮助。 您可以使用其中的强密码创建C ++ DLL,然后从C#app调用它以使用数据库文件名加密/解密方法。
答案 2 :(得分:1)
为什么不将密码放在app.config中并加密app.config。
请参阅here