2013-12-23 62 views
2

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

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

i。这个设置是否是一个明智的选择,还是其他我不知道更适合我正在进行的项目的设置?

ii。人们如何去确保这种连接?我可以使用OpenSSL生成的安全证书轻松设置与服务器的SSL连接,但我不确定这是否是保护桌面应用程序连接的正确方法,或者此方法是否主要用于HTTPS。何时一般人应该确保连接(有没有这种情况,例如,我所做的就是来回发送布尔值?)?讨论这些问题的任何好资源?例如,我的Windows PC上安装了很多联网的应用程序,但我没有看到其中许多应用程序在我的PC上安装了安全证书。是什么赋予了?

完全披露:我是一名C++(业余爱好者)程序员,他使用Boost库来满足我的网络编程需求,OpenSSL用于我的SSL加密。不过,我希望这能够在不付出太多注意这些事实:)

回答

1

答案来回答:

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

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

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

+0

感谢您的意见。有问题的应用程序将利用某种形式的用户身份验证,因此您的推荐一定会被遵守。我想我会去找这个题目的书。再次感谢。 – declay