2012-11-16 25 views
1

我正在使用OdbcConnection与DB2数据库ex进行通信。可以嗅探odbcconnection上的连接字符串吗?

using (var conn = new ODBCConnection("Database=Database;UID=user;PWD=password")) 
{ 
    conn.Open(); 
    … 
} 

我担心有权访问本机的人可能会尝试窃取数据库凭据。我混淆了代码,但可以使用packetsniffer来获取连接字符串吗?如果有,有什么办法可以防止这种情况发生?

+0

您可以使用可信连接吗? –

+0

如果可以,请使用Windows身份验证?有人可以肯定需要一个进程转储并在windbg中查看它。通过一些工作,他们将能够追踪字符串。 –

+0

这个程序运行在200台机器上,我们定义了一个“机器账号”和我们员工的用户这个程序来做日常工作。我们不能使用Windows身份验证,因为登录的用户不应该对数据库 – user889829

回答

0
+1

*加密,而不是散列。如果你散列连接字符串,你永远不会再看到它。 – zimdanen

+0

@zimdanen是的,我已经更新了我的答案,谢谢 –

0

如果有人访问你的组件或可执行文件,它的可以使用ildasm来读取C#编译成的中间语言(CIL)。即使您混淆了代码,检索String文字也很容易。

混淆器通常会加密字符串文字,并在使用之前注入额外的方法调用来解密它们。这意味着可以获得解密例程的实现和密钥,并自己运行它们。

因此,要回答您的问题,您甚至不需要使用数据包嗅探器来获取信用,您可以通过检查IL来做到这一点。

+0

我怎么能对此反应? – user889829

+0

真的,避免这种情况的唯一方法是对数据库连接使用集成Windows身份验证,因为它不涉及在代码中的任何位置存储密码。它依赖于当前登录的机器用户。 – wsanville

+0

问题是当前登录的用户不应该对数据库产生影响,他们应该使用我写的程序来完成他们的工作。我们希望他们只能通过这个程序使用数据库,但不会有其他方面的意见。 – user889829