如何阻止用户直接访问表?

时间:2015-04-23 21:08:52

标签: ms-access ms-access-2007

首先,我不是MS Access开发人员。但是,我有一份新工作,必须做一些MS Access开发。我将与另一位有此经验的开发人员合作;至少比我多。

他告诉我的一件事是,用户将进入这个MS Access应用程序,该应用程序进入表单,执行他们在那里做的任何事情,然后敲出表单应用程序以直接访问数据库表。 (Access应用程序是SQL Server 2005数据库的前端。)由于最终用户可以直接访问SQL表,因此您可以想象他们可以进入什么样的恶作剧。 (Access应用程序是由未完成应用程序的承包商编写的。)

所以我的问题是:我们如何防止最终用户离开Access应用程序直接与SQL表交互?我认为这是可能的,但就像我说我不是Office开发人员所以我不知道它将如何完成,甚至不知道我会寻找什么样的东西。

Access应用程序是用MS Access 2007编写的。

3 个答案:

答案 0 :(得分:4)

@rod 通常,MS Access提供的安全级别不是很令人印象深刻。但它为您提供某种安全性,防止新手用户访问不需要的信息。

寻找:

一些有用的研究/投资将是。

  • 用于MS访问的自定义功能区创建器,它将帮助您提供自己的按钮/色带(我使用了ribboncreator)
  • 提供会员/用户帐户。由于您已经拥有专用的SQL服务器,因此您可以将用户凭据保存在隐藏在前端的后端表中。通过编写存储过程/函数来检查用户是否具有访问权限。
  • 编写函数以收集错误,活动并上传到LOG表并监视活动。使用web-services + MSXML2.XMLHTTP + async完成此任务。}

答案 1 :(得分:3)

为用户创建用于浏览应用程序的UI。最基本的东西只是一个表单,其中包含用于打开用户需要在应用程序中访问的所有其他表单的按钮。

然后使用功能区导航到“文件” - > “选项” - > “当前数据库”。 从上面的步骤中选择应用程序的“显示表单”,然后取消选中以下所有选项“使用访问特殊键”,“显示导航窗格”,“允许完整菜单”,“允许默认快捷菜单”。

这将启动您访问应用程序并显示所选表单,而不使用任何标准UI来处理表或应用程序中其他对象的设计。

但是请注意,这只是保护正常用户通过改变他们不应该改变的东西来制造意外错误。这不会阻止恶意和知识渊博的攻击者。

如果要打开应用程序进行开发,请在打开文件时按住SHIFT键。

答案 2 :(得分:0)

Access之外的另一个选项是拒绝对您的SQL表具有DELETE权限的读/写访问权限的AD组。我能够使用Access 2013和Microsoft SQL Server Management Studio 2012成功完成此操作。This post discusses the command.

DENY DELETE ON tablename to [DOMAIN\groupname];

AD组中的用户可以通过我们创建的UI修改和删除数据,但无法打开表格,选择一行,然后点击删除键。他们收到以下错误:" ODBC - 删除链接表' tablename'失败....对象上的DELETE权限被拒绝...."