2013-03-02 41 views
2

我打算用Qt框架编写一个桌面应用程序,然后发布给公众。但我担心这种方法的安全性。通过桌面应用程序/安全性查询数据库

我通常代码PHP所以我知道SQL注入,并作出任何查询安全相关的任何数据库,但我碰到一个问题就来之前,我从未遇到过:桌面应用程序发送的查询从客户端到因此,我听说服务器并不像服务器到服务器(PHP)那样安全。

什么是主要安全风险,Qt如何防止它们,或者如何通过特定的编码技术来阻止它们?

对不起,我不能更具体,但我在桌面应用程序领域并不是很有经验。

回答

3

Qt没有为你保护你的数据。您应该首先关注确保RDBMS的安全。 当然,您应该仔细编写您的Qt客户端应用程序,以通过检查和消毒所有输入等来防止意外行为,但如果您不打算分发它,则这不应该是您最直接的担忧。

如果您打算将PostgreSQL用作应用程序的后端,您可以采取一些措施来减轻将任何服务暴露给互联网带来的风险。 最基本的:

  • 用适当的规则设置防火墙。仅允许来自可信来源的入站连接。
  • 只接受SSL连接,即使使用自签名证书。
  • 强制使用强密码。如果更多占用,请使用客户端证书。
  • 将您的pg_hba.conf文件设置为只接受来自已知/可信地址的连接。

Debian/Ubuntu有很好的PostgreSQL包。安装后,您可以轻松地将PG设置为允许SSL连接,而无需手动生成证书。

相关的PostgreSQL文档:

我可以为你提供一个非常简单的例子Qt应用程序(未完成),这是设计的,如果在PostgreSQL工作你要。请让我知道。

编辑:上传的示例应用程序GitHub:exampleapp。试图整理,但仍然有很多原本用西班牙文写成的字符串。无论如何,如果你开始使用Qt,你仍然可以找到一些有用的代码。 哦,我正在使用Qt5,并且必须为Qt编译我自己的PostgreSQL驱动程序(如果您使用的是Linux,则不是什么大问题)。我提到这是因为应用程序可能会或可能不会用Qt4进行编译。祝你好运!

1

关于

桌面应用程序从一台计算机发送查询到服务器

我不知道你在想的确切情况,但请记住,存储过程可以在这种情况下使用,以减轻SQL注入的风险。如果桌面应用程序只有权在数据库服务器上调用一系列存储过程,并且没有其他操作,那么您已经大大降低了风险。如果桌面客户端根本不可信,那么另一种方法是不让客户端桌面应用程序直接访问数据库。您可以编写一个图层驻留在服务器上,该服务器为客户端和客户端执行所有数据库访问,而不是使用数据库进行交互。

+0

我更关心查询和连接是否公开可用,因为它们必须从客户端传输到服务器。 – Shoe 2013-03-02 01:12:38

+0

所以你担心数据包嗅探器?我想只有一个加密的数据库连接会做,或者如果你选择创建客户端谈话的服务器层,那么它必须是一个SSL加密连接。 – Rich 2013-03-02 01:18:59

+0

这是唯一的安全风险吗? – Shoe 2013-03-02 01:19:55

相关问题