我将使用Qt框架编写一个桌面应用程序,然后应该向公众发布。但我担心这种方法的安全性。
我通常在PHP中编码因此我知道SQL注入和任何与使任何查询安全相关的数据库但我遇到了一个我以前从未遇到的问题:桌面应用程序从客户端发送查询 因此,我听说,对于服务器来说,服务器(PHP)并不安全。
主要的安全风险是什么,Qt如何阻止它们或如何通过特定的编码技术来阻止它们?
对不起,我不能再具体了,但我在桌面应用领域并不是很有经验。
答案 0 :(得分:4)
Qt无需保护您的数据。您应该首先关注保护您的RDBMS。 当然,您应该仔细编写Qt客户端应用程序代码,以通过检查和清理所有输入等来防止意外行为,但如果您不打算分发它,那么这不应该是您最直接的关注。
如果您计划将PostgreSQL用作应用程序的后端,则可以采取一些措施来降低将任何服务暴露给互联网所带来的风险。 最基本的:
pg_hba.conf
文件设置为仅接受来自已知/可信地址的连接。Debian / Ubuntu拥有出色的PostgreSQL包。安装后,您可以轻松设置PG以允许SSL连接,而无需手动生成证书的麻烦。
相关的PostgreSQL文档:
我可以为您提供一个非常基本的Qt应用程序示例(未完成),如果您愿意,可以使用PostgreSQL。请告诉我。
修改:将示例应用上传到GitHub:exampleapp。试图整理,但仍然有很多字符串混乱,最初用西班牙语写。无论如何,如果你从Qt开始,你仍然可以找到一些有用的代码。 哦,我正在使用Qt5并且必须为Qt编译我自己的PostgreSQL驱动程序(如果你在Linux上,这不是什么大问题)。我提到这个是因为应用程序可能会或可能不会用Qt4编译。祝你好运!
答案 1 :(得分:1)
关于
桌面应用程序将查询从计算机发送到服务器
我不知道您正在考虑的确切情况,但请记住,在这种情况下可以使用存储过程来降低SQL注入的风险。如果桌面应用程序只有权在数据库服务器上调用一系列存储过程而没有其他任何内容,那么您可以大大降低风险。如果桌面客户端根本不可信任,那么替代方法是不让客户端桌面应用程序直接访问数据库。您可以编写一个驻留在服务器上的层,该层为客户端执行所有数据库访问,并且客户端与之交互而不是数据库。