【问题标题】:How do you block users from accessing tables directly?如何阻止用户直接访问表?
【发布时间】:2017-04-13 05:19:56
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ms-access ms-access-2007


    【解决方案1】:

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

    寻找:

    会有一些有用的研究/投资。

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

    【讨论】:

      【解决方案2】:

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

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

      这将启动您的 Access 应用程序并在没有任何标准 UI 的情况下显示选定的表单,用于处理表格或在您的应用程序中设计其他对象。

      但请注意,这只是防止普通用户通过更改他们不应该更改的内容而犯下意外错误。这不会阻止恶意且知识渊博的攻击者。

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

      【讨论】:

        【解决方案3】:

        Access 之外的另一个选项是拒绝对您的 SQL 表具有读/写访问权限的 AD 组 DELETE 权限。我能够使用 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 权限被拒绝......”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-14
          • 2014-10-12
          • 2017-09-02
          • 1970-01-01
          相关资源
          最近更新 更多