我接受了VB.Net WinForms应用程序的支持,我正在支持的公司丢失了应用程序的源代码。我有应用程序的安装CD和网络安装的安装步骤:
从应用程序集的反编译中,我能够确定以下代码用于建立数据库连接(我希望连接字符串在应用程序设置中,但不幸的是没有这样的运气)。
OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder();
builder.ConnectionString = "Data Source=" + sDatasource;
builder.Add("Provider", "Microsoft.Jet.Oledb.4.0");
builder.Add("Jet OLEDB:Database Password", "....");
builder.PersistSecurityInfo = true;
gconn = new OleDbConnection(builder.ConnectionString);
现在我遇到的问题如下:此应用程序正在大学使用,设置中的第2步导致学院出现安全问题,因为打开文件夹到此范围允许任何人复制和执行代码服务器。学院经历过学生发现和利用这些安全问题。是否有某种方式可以将访问限制在包含数据库的文件夹中,以便学生不能在服务器上复制和执行代码,但是应用程序仍然能够连接并使用访问数据库?请记住,我在此阶段没有源代码来更改用于连接的连接字符串。
更新:
我认识的人建议我在批处理文件中使用Runas来运行域中特定用户的应用程序,然后只向该用户授予访问数据库的文件夹权限。这是一个可行的解决方案吗?
答案 0 :(得分:1)
我认为你不能真正使这个设置安全,但你可以采取一些措施来更好地控制它:
将访问数据库放入虚拟机内的“本地文件夹”中...将该文件夹放在仅包含该文件夹的虚拟机内的单独卷上...使该卷持久...
然后根据需要创建一个分享......
这样学生可能会做的任何事情仅限于VM(不考虑Blue Pill或类似的)...如果需要,您甚至可以使用一些VMWare Workstation功能将VM回滚到已知良好状态等。 ..
答案 1 :(得分:1)
为什么不使用反编译代码重建应用程序?然后,对于代理,请考虑引入Web服务。也许这是太多的工作......但是Web服务将允许从客户端应用程序到数据的连接更加安全,同时将MDB隐藏在服务之后。
答案 2 :(得分:0)
如果有人有兴趣,我将在这里概述我是如何设法让这个应用程序工作而不需要对源进行任何更改(考虑到我还没有工作源!)并且还保护了数据库文件夹所有用户。
嗯,这就是我解决它的方法,它运作良好...... 差不多 100%!! ;)我唯一的轻微(并且非常奇怪)打嗝是这样的......在重新启动客户端计算机后,在启动的前4分钟内启动应用程序将导致访问被拒绝与指定用户一起运行的应用程序尝试写入注册表时出现错误信息。如果应用程序在启动4分钟后启动(是的,我定时!!),然后突然写入注册表工作完美无缺。确实非常奇怪的问题,也许我会在stackoverflow上提出一个单独的问题...也许有人在这里知道启动时这种奇怪异常的原因。
反正。感谢大家的想法和想法,他们帮助我找到了解决方案。