在不配置防火墙的情况下连接到远程 SQL 服务器

Connecting to a remote SQL Server without configuring the firewall

我在美国有一个 SQL 服务器,我编写了一个程序连接到服务器上的数据库并从服务器获取数据。该程序的用户遍布世界各地。他们中的大多数人都可以轻松使用该程序(即成功建立连接)。

但是由于公司的防火墙,一些试图从办公楼内 运行 程序的用户无法连接到服务器。由于不知道用户的数量和位置(应用程序是免费分发的,没有通知我),定制每个防火墙并不是一个真正的选择(尽管当我能够这样做时它有所帮助)。

我相信应该有一个类似 "certificate" 的选项,它必须嵌入到我的程序中,并且必须在允许建立连接的用户机器上的某个地方注册。或任何类似的东西。不幸的是,我没有在互联网上找到任何具体的内容。很可能是因为我在谷歌上搜索了错误的词。

非常感谢任何帮助或建议!

如果防火墙(或其他安全设备)被阻止,则没有灵丹妙药。您需要避免直接与 SQL 服务器对话。

即使您更改了端口,许多公司员工也将仅限于 HTTP(S) 访问,并且只能通过代理访问。

因此您需要将 HTTP 与您提供的 API 进行对话,然后 API 的实现(在您的控制下)与数据库进行对话。

这具有巨大的优势,可以为您提供一个额外的层来保护数据库中数据的完整性。

要建立连接,您需要在客户端设置防火墙以允许访问您的 sql 服务器所在的 IP。

您可以向用户提供自定义消息以允许访问 SQL 服务器的 IP 地址,但出于安全考虑这样做并不安全。

相反,您可以制作第三个应用程序来接收来自客户端的请求并将其转发到您的 sql 服务器。就像一些网络服务。在 public IP 上托管此应用程序,并通知客户他们需要在防火墙中打开 IP 以 运行 该程序。既能保证安全,又能解决你的问题。