4

我即将开始开发一个新系统,该系统需要支持多个用户并可能允许通过 Internet 访问数据库。

该系统将是win32,而不是基于网络的,数据库将只是在办公室中并且可以在任何地方访问。我不确定这是否是一种危险的安全方法,我愿意接受建议

数据库将是 SQL Server,系统将在 Delphi 6 中实现

有谁知道我如何开始这个?我还需要考虑记录锁定。

如果有人可以提供指向好的文章的链接,将不胜感激。

干杯

保罗

4

4 回答 4

6

恕我直言,对您来说最简单的方法是创建一个 VPN,通过 Internet 安全地公开您的数据库。

安全性非常好,因为只有通过受信任的 VPN 连接才能访问数据库。

您的数据库可以从任何地方访问,使用 Internet 作为安全传输数据库数据包的隧道。

因此,您的 Delphi 代码将像往常一样使用 TCP/IP 连接,通过 VPN 安全隧道连接到数据库。

无需添加额外的 Delphi 专用工件,如 Indy 组件等。并且您将能够连接到非 Delphi 客户端的数据库,这可能是使用一些数据库浏览工具的好主意。

于 2010-10-29T08:48:01.083 回答
2

在 Internet 上公开数据库一种安全风险。安全漏洞很容易被远程利用。

解决方案是:

  1. VPN,如其他答案所述。简单且安全,但需要在两个端点(客户端和 VPN 服务器)上进行一些设置,并且如果您不使用标准 VPN,则可能需要在服务器 - 或 VPN 路由器/设备 - 以及客户端上安装适当的软件协议)。
  2. 一个 n 层应用程序,其中只有应用程序服务器暴露于 Internet。您仍然需要妥善保护应用服务器和传输通道。可能需要较少的客户端设置。Delphi 6 提供 Datasnap 作为 n 层库(它也仍然支持 CORBA,但自 D7 以来已被删除)。DCOM 对防火墙不是很友好(但可以配置为跨它们工作)但可以自己保护通道,其他两个选项(套接字和 HTTP)更容易设置但安全性稍差(它们使用 DCOM 代理工作,因此客户端身份丢失,并且需要自定义代码或证书来保护通道)。
  3. 第三种解决方案可能是让用户通过远程桌面远程连接,但它需要许可证和能够维持远程会话负载的机器。

记录锁定由数据库本身处理 - 请仔细阅读有关 SQL Server 锁定模式的文档,以避免以后出现意外情况。如果连接速度不够快,您可以选择在客户端缓存一些数据(TClientDataset 对此非常有效),它还可以减少锁定问题,但会引入更新冲突。

于 2010-10-29T10:13:24.800 回答
1

实际上,有几十种可能的技术,取决于您的经验、偏好和可用的工具。不过,我建议您使用 ADO 连接到数据库而不是 BDE。为此,您可以使用作为 Delphi 一部分的 ADO 组件或将 msado15.dll 类型库导入您的项目以使用原始 ADO API 调用。后者需要更多的经验!
SQL Server 能够将自己暴露给 Internet,尽管这会产生安全风险。尽管如此,想要访问它的人仍需要用户名和密码才能获得连接,并且您需要打开 SQL Server 使用的端口。但从技术上讲,要在 Internet 上使用 ADO,您只需要知道工作服务器的 IP 地址以及登录信息即可。不过,这是一个安全风险。出于这个原因,大多数开发人员不会将 SQL Server 公开给数据库,而只是编写 Web 服务来包装您想要公开的特定数据库功能。
记录锁定是 SQL Server 将为您做的事情,如果您使用事务,您可以使其更加安全。

最后,您需要学习和阅读的内容在很大程度上取决于您想要在应用程序中执行的操作。因此,在您开始编写一些代码之前,请开始编写功能设计以了解您想要什么以及为此需要什么。从这个文档开始,开始编写技术文档来更准确地描述你的代码需要做什么。一旦你有了这个,你可以就你需要的东西提出更直接的问题,但目前还不知道。

于 2010-10-29T10:21:51.500 回答
1

您可能指的是通过 TCP/IP 进行通信的客户端服务器系统。

您可以使用 Indy 组件创建它。请务必检查示例,因为它们不容易使用,但您可以创建几乎任何与它们相关的网络。

于 2010-10-29T08:20:59.480 回答