2013-03-02 43 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

相關問題