我将使用Qt框架编写桌面应用程序,然后将其发布给公众。但我担心这种方法的安全性。
我通常使用PHP编写代码,因此我知道SQL注入和任何与任何查询安全相关的数据库,但我遇到了一个以前从未遇到过的问题:桌面应用程序将查询从客户机发送到服务器,因此,我听说,并不像服务器到服务器(PHP)那样安全。
主要的安全风险是什么,Qt如何防止它们,或者如何通过特定的编码技术来防止它们?
对不起,我不能说得更具体了,但我对桌面应用程序领域没有真正的经验。
发布于 2013-03-02 01:57:56
Qt对保护您的数据没有任何帮助。首先,您应该集中精力保护RDBMS。当然,您应该仔细编写Qt客户端应用程序的代码,通过检查和清理所有输入等来防止意外行为,但是如果您不打算分发它,这不应该是您最直接的考虑。
如果您计划使用PostgreSQL作为您的应用程序的后端,您可以采取一些措施来降低将任何服务暴露给internets带来的风险。最基本的:
pg_hba.conf文件设置为仅接受来自已知/受信任地址的连接。Debian/Ubuntu拥有优秀的PostgreSQL包。安装后,您可以轻松地设置PG,以允许SSL连接,而无需手动生成证书。
相关的PostgreSQL文档:
我可以为您提供一个非常基本的Qt应用程序示例(未完成的),如果您愿意的话,它可以设计为与PostgreSQL一起工作。告诉我就行了。
编辑:将示例应用程序上传到GitHub:实例应用。试图整理,但仍然有一个混乱的许多字符串,最初是用西班牙语写的。无论如何,如果您从Qt开始,仍然可以找到一些有用的代码。哦,我正在使用Qt5,必须为Qt编译自己的PostgreSQL驱动程序(如果您在Linux上的话,这不是什么大不了的事)。我之所以提到这一点,是因为该应用程序可能使用Qt4编译,也可能不编译。祝好运!
发布于 2013-03-02 01:10:08
关于
桌面应用程序将查询从计算机发送到服务器
我不知道您正在考虑的确切情况,但请记住,在这种情况下可以使用存储过程来降低sql注入的风险。如果桌面应用程序只具有在db服务器上调用一系列存储过程的权限,那么您已经大大降低了风险。如果桌面客户端根本不受信任,那么另一种选择是不让客户端桌面应用程序直接访问数据库。您可以编写一个驻留在服务器上的层,服务器为客户端执行所有db访问,客户端与服务器交互,而不是数据库。
https://stackoverflow.com/questions/15169393
复制相似问题