保护与MS Access数据库的ODBC网络连接

时间:2010-08-03 23:08:15

标签: security ms-access ssl odbc

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

情况就是这样。

有一个MS Access“数据库”(是的,我知道,相信我,我知道),我需要从远程位置进行SELECT,UPDATE和INSERT。问题在于这需要安全地发生。

我可以完全控制托管MS Access文件的远程计算机,因此我可以随意添加驱动程序和软件。该服务器是Microsoft Windows Server 2003。

我打算采取的方法是在HTTPS服务器上托管PHP脚本(使用Apache或IIS,无关紧要),将XML发送到PHP脚本,然后在MS Access上执行此操作数据库并发回XML结果。但是,由于时间的限制,我试图找出是否可以通过ODBC以安全的方式直接连接,并让它与MS Access数据库通信。

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

特别是我有兴趣是否有方法可以使用SSL-ify ODBC连接而不考虑底层数据库。我本可以在Unix克隆上自己解决这个问题,但主机是Windows Server 2003,在这种情况下,我不知道如何继续。

这有可能吗?任何信息高度赞赏!

3 个答案:

答案 0 :(得分:1)

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

作为一个Java人,我会自动认为Web客户端与一个或多个servlet交谈。让servlet处理身份验证和授权。 HTTP意味着没有防火墙的担忧。您也可以使用HTTPS。

我认为更容易实施。此外,即使是SSL-ified ODBC连接仍然会将您的数据库暴露给更广泛的Internet。我不希望我的数据存储在这样的存储库中。你呢?

答案 1 :(得分:1)

这里的问题是您不太了解ODBC连接如何与访问一起使用。我们不是在谈论TC / IP或基于socked的连接。

如果您查看JET访问文件的任何连接字符串,您将始终在ODBC连接中看到,I REPEAT总是包含一个完全限定的Windows路径名。当我说一个完全限定的Windows路径名时,我正在谈论一个位于硬盘上的文件。

在一天结束时,我们正在讨论打开简单的Jane Windows文件。马是马是马,窗口文件是Windows文件,是Windows文件。

换句话说,我们正在讨论打开位于硬盘上的文件。因此,整个过程与打开excel文件,文本文件,PowerPoint文件或在这种情况下恰好也恰好位于硬盘上的访问文件没有任何不同。

没有服务器或特定的数据库软件,必须在此文件设置的计算机上安装EVER。客户端必须拥有软件并执行标准的Windows文件打开命令以从磁盘驱动器中提取数据。记住,当你在服务器上放置一个word文件并打开它时,你永远不必在服务器上安装word,是打开windows标准文件的客户端,并且当它打开一个访问文件时,完全相同的场景适用于JET

这意味着如果您要通过Internet连接打开此文件,则必须通过Internet扩展Windows网络。 HTTP,甚至FTP都不是远离Windows文件网络协议的。

但是,您可以通过Internet扩展Windows网络系统,这通常通过称为VPN(虚拟专用网络)来完成。这意味着您必须设置VPN。这将允许您通过网络邻居查看此其他计算机并浏览到服务器上该文件夹上的文件,然后只需打开它。再次打开一个标准的Windows文件,服务器上没有运行某种类型的服务,可以像SQL服务器一样连接到服务器。

您可以阅读我的以下文章,并解释为什么使用Windows网络和JET(访问)文件在Internet上运行VPN无法以可靠的方式运行:

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

所以,请记住,如果你查看任何JET ODBC连接字符串,你会发现它永远不是基于IP的,但必须是一个完全合格的标准Windows文件名。我不能再强调并重复我们谈论的标准Windows文件名和我们要打开的位置。

请记住,这与打开word或excel或PowerPoint没有什么不同。 ODBC驱动程序混淆了这个问题,因为只需要在客户端安装和设置驱动程序,除了打开标准普通Jane Windows文件所需的能力之外,没有什么可以连接服务器端的两个。

您通过VPN可以提出的问题,但不实用。您可以阅读上面的文章,它详细解释了为什么这不能可靠地工作和运作。

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

答案 2 :(得分:0)

为什么您的MS-Access(真正的MS-Jet)数据库只有1个文件? 我无法想象。如果它不是ODBC数据库,那么我可以想象它。 大多数MS-Jet ODBC数据库都包含100个* .MDB文件, 其中每个MDB文件充当:单个表,一组表或部分表,它们在数十个或100个MDB文件中进行逻辑和物理传播(不拆分,没有链接)。没有MDB文件本身被视为数据库。 这就是我如何看到使用MS-Access驱动程序构建的ODBC数据库 MS-Jet引擎。 大多数ODBC MS-Jet / MS-Access驱动程序数据库大小约为50亿行和1太字节。

相关问题