【问题标题】:Common practices for SQL Server access from Windows Application on remote network?从远程网络上的 Windows 应用程序访问 SQL Server 的常见做法?
【发布时间】:2010-08-16 19:27:18
【问题描述】:

背景

我们有一个 Windows .NET 应用程序供我们的现场员工使用,他们在全国各地旅行并且大部分时间都住在酒店外。最近我们添加了一些直接连接到我们的 SQL Server 2005 以进行数据访问的功能(即 SqlConnection.Open())。从那以后,我们遇到了一些问题,即生成错误,表明无法访问服务器。

此错误在我们员工中的间歇性性质使我们相信这可能是由于端口阻塞问题,并且某些酒店可能阻塞了 SQL Server 使用的端口 1433。当我们开始研究这个问题时,我们遇到了许多 cmets 表示,公开开放端口 1433 是一个主要的安全漏洞,应该仅限于内部/本地使用。

问题

所以我的问题是 - Windows 应用程序有哪些替代方案可以从 SQL Server 数据库请求和接收数据,从而提高安全性并绕过公共网络(例如酒店 WiFi)设置的常见阻塞?

我知道 VPN 是一种选择,但据我所知,VPN 连接在公共网络上被阻止的情况并不少见。

【问题讨论】:

    标签: .net windows sql-server-2005 networking


    【解决方案1】:

    是的,请使用允许遍历所有 NAT/防火墙的协议:HTTP。换句话说,不是使用 SqlConnection 连接,而是添加一个中间层 Web 服务层。如果您认为这很复杂,请参阅Creating an OData API for StackOverflow including XML and JSON in 30 minutes

    让 SQL Server TDS 端口直接向网络开放,即使在移动到非默认端口之后,无论您如何扭曲或转动它,都是一个主要的安全问题。

    【讨论】:

    • 感谢您的链接;这很有帮助。
    【解决方案2】:

    您最好的选择可能是使用将在内部调用 SQL 的 WebService。然后,您可以将 Web 服务发布到您需要的任何端口,Windows 应用程序(尽管我自己可能会将其更改为 Web 应用程序)可以在您定义的任何端口上调用 Web 服务。

    【讨论】:

      【解决方案3】:

      我会使用带有 SSL 加密的 WebService 或 WCF 服务。

      您也应该考虑许可费用...

      如果您的用户访问 sql 服务器,则它是每个用户的许可证。只有每个套接字的许可不同。

      【讨论】:

      【解决方案4】:

      实际上只有两种选择:

      1. 将 SQL 服务器移至其他端口。这仍然是最不安全的,但可以让您通过大多数防火墙。希望您并没有真正通过该线路发送实际的 sql...无论如何都要加密它。

      2. 更改应用程序以通过 Web 服务进行通信。这将需要一点时间,但您有能力最终获得一个更安全的系统。加密仍然是必须的;并且在任何情况下都不能使用它来通过网络发送 sql 语句。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-12
        • 2023-03-17
        相关资源
        最近更新 更多