代码之家  ›  专栏  ›  技术社区  ›  Teekin

到MS Access数据库的安全ODBC网络连接

  •  0
  • Teekin  · 技术社区  · 16 年前

    请原谅我的愚蠢,我不知道这是否可能。

    情况就是这样。

    有一个MS Access“数据库”(是的,我知道,相信我,我知道),我需要从远程位置选择、更新和插入到该数据库。关键是这需要安全地进行。

    我完全控制了托管MS访问文件的远程计算机,因此我可以根据需要放入驱动程序和软件。服务器是Microsoft Windows Server 2003。

    我打算采用的方法是在HTTPS服务器上宿主一个PHP脚本(使用Apache或IIS,无所谓),将XML发送到PHP脚本,然后在MS Access数据库上执行它的操作,并将XML结果发送回。然而,由于时间限制,我试图弄清楚是否可以通过ODBC以安全的方式直接连接,并让它与MS Access数据库通信。

    据我所知,ODBC并不以安全著称,但有支持加密连接的ODBC驱动程序,或者我可以通过SSL以某种方式对ODBC连接进行隧道连接。但是,到目前为止,我发现的所有信息都依赖于Microsoft SQL数据库。

    特别是,我感兴趣的是,是否有方法可以在不考虑基础数据库的情况下对ODBC连接进行SSL验证。我可能自己在一个Unix克隆上就知道了,但是主机是一个WindowsServer2003,在这种情况下,我不知道如何继续。

    这有可能吗?非常感谢您提供的任何信息!

    3 回复  |  直到 8 年前
        1
  •  1
  •   Albert D. Kallal    16 年前

    这里的问题是,您不太了解ODBC连接如何与Access一起工作。我们这里不讨论基于tc/ip或socked的连接。

    如果您查看jet-to-access文件的任何连接字符串,您会发现在odbc连接中,我重复一遍,始终包含一个完全限定的Windows路径名。当我说一个完全限定的Windows路径名时,我正在谈论一个位于硬盘上的文件。

    最后,我们将讨论如何打开一个普通的JaneWindows文件。一匹马是一匹马,一个windows文件是一个windows文件,一个windows文件。

    换句话说,我们谈论的是打开硬盘上的文件。所以,整个过程与打开Excel文件、文本文件、PowerPoint文件,或者在这种情况下,访问文件恰好也位于硬盘上没有任何不同。

    在设置此文件的计算机上,不需要安装任何服务器或特定的数据库软件。客户端必须拥有软件并执行标准的Windows文件打开命令,才能从磁盘驱动器中提取数据。请记住,当您将一个Word文件放在服务器上并打开它时,您不必在服务器上安装Word,它是正在执行Windows标准文件打开的客户端,当它打开一个访问文件时,同样的情况也适用于Jet。

    这意味着什么?如果要通过Internet连接打开此文件,则必须通过Internet扩展Windows网络。HTTP,甚至ftp都不能远程接近Windows文件网络协议。

    但是,您可以在Internet上扩展Windows网络系统,这通常由称为VPN(虚拟专用网络)的VPN完成。这意味着你必须设置一个VPN。这样,您就可以通过网络邻居看到另一台计算机,并浏览到服务器上该文件夹上的文件,然后简单地打开它。再次打开一个标准的Windows文件,在服务器上没有运行某种类型的服务,您可以像使用SQL Server那样连接到。

    您可以阅读我的以下文章,我解释了为什么在Internet上运行带有Windows网络和Jet(访问)文件的VPN不能以可靠的方式工作:

    http://www.members.shaw.ca/AlbertKallal//Wan/Wans.html

    因此,请记住,如果您查看任何一个jet-odbc连接字符串,您会发现它从来不是基于IP的,但必须是完全限定的标准Windows文件名。我不能再强调和重复我们要打开的标准Windows文件名和位置。

    记住这和打开Word、Excel或PowerPoint没有什么不同。ODBC驱动程序混淆了这个问题,因为驱动程序只需要在客户端安装和设置,所以在服务器端没有连接两个驱动程序的功能,只需要打开标准的纯jane Windows文件。

    因此,用VPN尽可能询问什么,但不实际。您可以阅读上面的文章并详细解释为什么它不能可靠地工作和工作。

    随着几个免费版本的SQL Server的出现,以及许多其他选择,上述限制可能不会成为您的问题。这些其他服务器数据库系统不是基于文件的,并且您的连接字符串永远不会解析为某个文件名。因此,这些数据库服务器也不需要Windows Networking Proto调用来打开该文件,因此您甚至可以连接到运行Linux等甚至没有安装Windows Networking的服务器。对于Jet连接,必须使用Windows网络直接打开文件。

        2
  •  1
  •   duffymo    16 年前

    通常在客户机和数据库之间放置一个中介。中介处理身份验证、授权、安全数据传输等。您假设数据库在防火墙内的安全区域中。为了确保防火墙之外的客户机的安全,您要添加的所有内容都由中介处理。

    作为Java用户,我会自动地认为Web客户端与一个或多个servlet对话。让servlet处理身份验证和授权。HTTP意味着不需要担心防火墙。你也可以使用https。

    我认为这样做会更容易。此外,即使是一个SSL化的ODBC连接,也会使您的数据库暴露在更广泛的互联网上。我不想把我的数据放在这样的存储库中。你愿意吗?

        3
  •  0
  •   MS-AccessUnleashed    8 年前

    为什么您的MS Access(实际上是MS Jet)数据库只有一个文件?
    我无法想象。如果它不是一个ODBC数据库,那么我可以想象它。 大多数MS Jet ODBC数据库中都有100个*.mdb文件, 其中,每个MDB文件都充当一个:单个表、一组表或部分表,该表在数十个或100个MDB文件之间进行逻辑和物理分布(不拆分,也不链接)。任何mdb文件本身都不被视为数据库。 这就是我如何看到使用MS Access驱动程序构建的ODBC数据库以及 MS喷气发动机。 大多数的odbc ms-jet/ms-access驱动程序数据库大约有50亿行,1兆字节的大小。

    推荐文章