none
关于CRecordset的密码连接安全 RRS feed

  • 常规讨论

  • 直接使用CRecordset类,我发现即使在GetDefaultConnect里加密连接字符串再return。使用完后就算是释放了CRecordset,内存里还是有数据库密码的明文的。
    在运行该mfc写的程序后,只要随便用哪款内存读取软件,搜索一下数据库文件名,就会找到好多明文密码
    密码主要是在CRecordset:m_pDatabase->m_hdbc这个位置附近,m_hdbc其实是个内存地址,我看过大概m_hdbc+0x2ce附近有好几个明文的密码。
    请问各位高手,是否有办法在用完CRecordset后把这些明文密码去掉?有几个m_hdbc+?????的,偏移量是动态变化的,每次用CRecordset都不同,应该是某个odbc32.dll里的局域变量没有释放吧。
    我跟踪过,这些内存是dbcore.cpp行743也就是CDatabase::Connect的::SQLDriverConnect生成的,后面的CDatabase::Close的AFX_SQL_SYNC(::SQLDisconnect(m_hdbc));  AFX_SQL_SYNC(::SQLFreeConnect(m_hdbc));根本就没释放干净,好多明文啊
    2009年7月26日 17:37