Xml 保护VBA应用程序中来自用户和QA的数据库密码

Xml 保护VBA应用程序中来自用户和QA的数据库密码,xml,vba,security,ms-word,Xml,Vba,Security,Ms Word,我们有一个Word VBA应用程序,安装在1000多台计算机上,用户每天都在使用它。此VBA加载项连接到多个数据库,这些数据库的凭据存储在我们提出的自定义xml文件中。我们公司现在不希望将密码以明文形式存储在xml文件中,因为当应用程序安装在用户的机器上时,xml文件也会作为安装的一部分推送到安装文件夹中,一个好奇的用户在挖掘xml时,实际上可以找到数据库的密码。他们希望在一周内实现一项安全功能,而不进行大规模代码更改,这将防止用户和QAs/prod支持人员在测试应用程序时看到这些密码。由于时间

我们有一个Word VBA应用程序,安装在1000多台计算机上,用户每天都在使用它。此VBA加载项连接到多个数据库,这些数据库的凭据存储在我们提出的自定义xml文件中。我们公司现在不希望将密码以明文形式存储在xml文件中,因为当应用程序安装在用户的机器上时,xml文件也会作为安装的一部分推送到安装文件夹中,一个好奇的用户在挖掘xml时,实际上可以找到数据库的密码。他们希望在一周内实现一项安全功能,而不进行大规模代码更改,这将防止用户和QAs/prod支持人员在测试应用程序时看到这些密码。由于时间有限,我提出了以下想法:

  • 在xml文件中使用替换字符串作为密码占位符。(下面的示例)
  • 在应用程序本身中有一个字典,将这些值映射到实际密码
  • 密码保护包含实际应用程序代码的文件
  • 第1点中提到的示例Xml

    <Database-Passwords>
        <DB-Name>DB1</DB-Name>
        <Username>Username1</Username>
        <Password>FakePassword1</Password>
    </Database-Passwords>
    
    
    DB1
    用户名1
    伪造密码1
    
    在应用程序代码中维护一个键值对列表,其中将有
    (fakePassword1,RealPassword1)
    作为键值对

    这将阻止用户知道密码。但是,QAs和Prod支持人员,他们一步一步地检查代码并调试应用程序,仍然可以识别密码。如何克服这一问题?有没有一种方法可以确保密码的安全,使应用程序在代码更改最少的情况下看起来不会工作,但用户/QA将无法破解密码

  • 在xml文件中使用替换字符串作为密码占位符。(下面的示例)
  • 不安全,任何稍有知识的人都可以反编译你的应用程序并找出真正的密码。我想即使用记事本打开exe,dll也能给我真正的密码

  • 在应用程序本身中有一个字典,将这些值映射到 实际密码
  • 编辑:可能是不安全的,我不太明白这个想法。听起来很像第一个选择

  • 密码保护包含实际应用程序代码的文件
  • 不安全您可以在操作系统中对其进行“密码保护”,但这并不意味着如果我尝试使用Linux Live CD,则无法以纯文本形式查看该文件。此外,您还必须将文件密码存储在应用程序中(可能),用户可以执行我在第一个选项中提到的相同操作来查找文件的密码


    保护DB密码的最佳方法是将其置于受控访问环境(例如,服务器)中。这意味着您必须创建一个客户机-服务器体系结构。基本上,您将创建一个与服务器连接的客户端应用程序,服务器将与DB“对话”

    什么是后端数据库?您是执行临时查询还是准备好的查询?它们是否部署在域环境中?它连接到各种数据库。Sybase ASE、IBM DB2、SQL server 2008。查询本身是根据UI选择从另一个xml文件读取的,并针对连接的数据库执行。它更像是即席查询。数据库运行在公司内部托管的生产服务器上。