我正在使用 OdbcConnection 与 DB2 数据库 ex 进行通信。
using (var conn = new ODBCConnection("Database=Database;UID=user;PWD=password"))
{
conn.Open();
…
}
我担心有权访问机器的人可能会试图窃取数据库凭据。我已经混淆了代码,但是可以使用数据包嗅探器来获取连接字符串吗?如果是这样,有没有办法防止这种情况?
如果有人可以访问您的程序集或可执行文件,则可以使用ildasm来读取 C# 编译成的中间语言 (CIL)。即使您混淆了代码,也很容易检索字符串文字。
混淆器通常会加密字符串文字,并在使用它们之前注入一个额外的方法调用来解密它们。这意味着可以获得解密程序的实现和密钥,并自己运行它们。
因此,要回答您的问题,您甚至不需要使用数据包嗅探器来获取凭据,只需检查 IL 即可。
您可以将您的连接字符串存储在 App.Config/Web.Config 中,然后您可以加密您的连接字符串
http://msdn.microsoft.com/en-us/library/zhhddkxy(v=vs.100).aspx