【问题标题】:On database communication security关于数据库通信安全
【发布时间】:2013-12-23 15:52:55
【问题描述】:

所以,我一直在阅读有关桌面应用程序和数据库服务器的安全性。以前,当我构建链接到数据库的应用程序时,我采取了简单的方法,直接将硬编码的连接字符串直接存储在源代码中。自从二进制文件没有分发给第三方以来,这一直有效。但是,现在我正在处理一个项目,其二进制文件绑定给第三方使用,在这种情况下,与服务器的通信成为我需要处理的安全问题。

由于优先考虑的是没有从客户端机器直接连接到远程数据库,我知道服务器/客户端数据库服务是一个不错的选择。在这种情况下,客户端机器使用 TCP 向服务器发送请求,然后服务器使用存储过程处理请求并相应地响应客户端。

我的问题是:

我。这种设置是可取的,还是我不知道的其他设置更适合我正在从事的项目?

二。如何确保这样的连接?我可以使用 OpenSSL 生成的安全证书轻松设置与服务器的 SSL 连接,但是我不确定这是否是保护桌面应用程序连接的正确方法,或者此方法是否主要用于 HTTPS。并且通常应该在何时保护连接(是否存在无关紧要的情况,例如,如果我所做的只是来回发送布尔值?)?任何讨论这些问题的好资源?例如,我在我的 Windows PC 上安装了很多联网的应用程序,但我看不到其中有很多应用程序在我的 PC 上安装了安全证书。什么给了?

完全披露:我是一名 C++(业余爱好者)程序员,我使用 Boost 库来满足我的网络编程需求,并使用 OpenSSL 来满足我的 SSL 加密。但是,我希望可以在不过多关注这些事实的情况下回答这个问题:)

【问题讨论】:

    标签: database security ssl tcp connection


    【解决方案1】:

    答案:

    我。让您的应用程序与 Web 服务通信,然后再与数据库通信是一种更好的设置。这将数据库从客户端抽象出来(因此直接从互联网访问)。

    二。这取决于对您的系统的威胁是什么。如果您从上述 Web 服务出售的数据是不敏感的数据,并且不是特定于用户的数据(例如允许搜索公共照片库的应用程序,因此您的 Web 服务只返回带有 URL 的结果集),那么您可能只需使用 SSL 就可以了。其他应用程序可以通过多种方式安装自己的证书。他们可以从像威瑞信这样的 CA 获得证书,因此您的计算机已经信任它。或者他们可以使用应用程序的二进制文件部署公共证书,并在他们的应用程序内部处理它(这是证书固定的一种形式)。

    ii 第 2 部分。如果您需要客户端进行身份验证,出于想要确保不只是任何人都可以使用您的 Web 服务或支持更高级的授权模型的原因,那么您需要实现某种的认证。这将是一个更大的问题需要解决。

    【讨论】:

    • 感谢您的 cmets。有问题的应用程序将使用某种形式的用户身份验证,因此肯定会遵循您的建议。我想我会去寻找关于这个主题的书籍。再次感谢。
    【解决方案2】:

    确保您使用 CA 签名证书,而不是自签名证书。您可能还需要考虑服务和数据库之间的相互身份验证。

    【讨论】:

      猜你喜欢
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      相关资源
      最近更新 更多