【问题标题】:VBA Access security question: Detect if the instance of access is from Access.Application?VBA Access 安全问题:检测访问实例是否来自 Access.Application?
【发布时间】:2019-10-28 22:01:37
【问题描述】:

我的文件 (c:\mydb.accbe) 具有针对 shift 绕过、隐藏访问对象窗口保护、禁用 ctrl-g、热键绕过保护等的保护。项目也受密码保护,然后编译和加密。

问题是任何对该 accde 文件具有读取权限的用户都可以创建一个新的访问项目并使用此代码创建该项目的受保护文件的实例:

Dim appAccess As Access.Application 
Set appAccess = CreateObject("Access.Application") 
appAccess.OpenCurrentDatabase = "c:\mydb.accbe"

现在他们可以调用该实例的任何公共函数,例如:

call appAccess.run("thisIsPublicFunctionIn_mydb")

我可以看到两种可能的方法来缓解这种情况: 1# 任何可能敏感的函数都会获得一个包含“安全”代码的额外参数。 2# 通过在最后将所有函数重命名为随机数来增加一些安全性。

然后使用真正的编程语言(遗憾的是不是一个选项),对我如何检测或防止它有任何建议?

【问题讨论】:

标签: vba security ms-access


【解决方案1】:

当应用程序通过自动化打开时,UserControl 属性是可更新的,所以这不是一个真正的选择。

您无法阻止这种情况发生。最好的办法是使用 SQL Server 后端,您可以在其中严格控制表的权限,并使用 procs(有权限)来更新敏感数据。

【讨论】:

    【解决方案2】:

    我相信application.UserControl 会解决这个问题。我刚刚试过,通过access.application打开似乎没问题

    【讨论】:

    • 是的。但是您可以通过自动化(!)设置该属性:Application.UserControl property (Access)。因此,它是一种信息,开发人员可以使用它来控制行为,而不是作为安全选项。
    猜你喜欢
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多