Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 论数据库通信安全_Database_Security_Ssl_Tcp_Connection - Fatal编程技术网

Database 论数据库通信安全

Database 论数据库通信安全,database,security,ssl,tcp,connection,Database,Security,Ssl,Tcp,Connection,所以,我一直在阅读有关桌面应用程序和数据库服务器的安全性。以前,当我构建链接到数据库的应用程序时,我采用了简单的方法,直接将硬编码的连接字符串存储在源代码中。这是因为二进制文件没有分发给第三方。然而,现在我正在从事一个项目,该项目的二进制文件被绑定供第三方使用,在这种情况下,与服务器的通信成为我需要处理的安全问题 由于没有从客户机直接连接到远程数据库是一个优先事项,因此我知道服务器/客户机数据库服务是一个不错的选择。在这种情况下,客户机使用TCP向服务器发送请求,然后服务器使用存储过程处理请求并

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

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

我的问题是:

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

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

完全公开:我是C++(爱好者)程序员,使用我的网络编程需要的Boost库和我的SSL密码的OpenSSL。然而,我希望这个问题可以在不太注意这些事实的情况下得到解答:)

答案:

一,。让应用程序与web服务对话,然后再与数据库对话是一种更好的设置。这将数据库从客户端抽象出来(因此可以直接从internet访问)

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


第二部分。如果您需要客户机进行身份验证,原因是希望确保不仅仅是任何人都可以使用您的web服务,或者支持更高级的授权模型,那么您需要实现某种身份验证。这将是一个更大的问题

确保使用CA签名的证书,而不是自签名的证书。您可能还需要考虑服务和数据库之间的相互认证。 谢谢你的评论。所讨论的应用程序将使用某种形式的用户身份验证,因此您的建议肯定会得到遵守。我想我会去找这方面的书。再次感谢。