我试图阻止数据库用户在Access 2010数据库的导航窗格中查看链接表。我隐藏了窗格并禁用了F11键。
我知道您可以禁用SHIFT键的功能,允许您根据this article绕过访问启动选项。
我的问题是,是否可以阻止用户从数据库本身内或通过另一个数据库远程重新启用shift键。如果这是不可能的,那么任何人都知道我可以使用的下一个最好的方法来阻止用户在导航窗格中查看表格(我知道访问不是最安全的数据库,但它是我们在办公室atm)
由于
答案 0 :(得分:4)
我在Access中的安全方法如下:
使用复杂密码加密主数据库。
使用第二个数据库登录此加密数据库。第二个数据库使用用户密码存储用户名,用户salt和主数据库密码的加密版本。这样,用户无需拥有主密码。
然后,编译第二个数据库,因此更难修改数据库并打印主加密密钥。
弱点:
要详细了解所有细节,所以here是我的实施。
文件元数据:大小:672 KB,SHA1哈希:19A6C756B8D5B0CDCEBE505B289062A1BBD94DEC
快速手册:首次运行时会提示主数据库密码,位置,第一个用户名和密码。之后,您可以使用表单执行任何操作。
请注意,它是早期的工作,我没有深入思考SQL注入(我使用双引号转义并为此感到羞耻)。但是,这不是主数据库的安全风险,它只会为破坏性黑客开辟一种可能性(对数据库文件具有写访问权限的人可能会破坏它)。
它未编译且菜单未隐藏,因此您可以轻松检查和修改它。实现时,隐藏所有菜单并进行编译。
数据库,作为所有SO内容,获得CC BY SA 3.0许可
答案 1 :(得分:0)
当然,使用SQL Server作为后端不会改变这个问题。 (因此建议使用SQL服务器不会解决此问题)。如果用户可以从SQL服务器中获取+查看数据,则在Excel中或通过Access中的链接表不会更改此安全问题。但是,您可以在Access启动代码中检查是否已启用shift by-pass然后禁用它,然后退出数据库。 (它需要重新启动才能生效)。因此,即使用户禁用了shift键,您的启动也会重新启用。使用编译(accde)将阻止用户修改任何代码。
因此,只需检查应用程序启动时shift键的状态,如果已启用,只需使用引用的代码禁用shift键并退出。
公平地说,上述情况并非100%可靠,因为理论上如果启用了shift键,您的启动代码将无法运行。另一个提示是始终为用户提供使用的快捷方式(并且该快捷方式将包括/ runtime开关,无论设置如何,它都会禁用shift键 - 因此这将在某种程度上提供"这里有一个额外的层。 / p>