2013-12-23 61 views
2

所以,我一直在閱讀有關桌面應用程序和數據庫服務器的安全性。以前,當我構建鏈接到數據庫的應用程序時,我採取了簡單的路線,並直接將連接字符串直接存儲在源代碼中。這是因爲二進制文件沒有分發給第三方。但是,現在我正在開發一個項目,該項目的二進制文件被綁定到第三方使用,在這種情況下,與服務器的通信成爲我需要處理的安全問題。關於數據庫通信安全

由於從客戶端計算機沒有直接連接到遠程數據庫的優先級,我知道服務器/客戶端數據庫服務是一個不錯的選擇。在這種情況下,客戶端機器使用TCP向服務器發送請求,服務器然後使用存儲過程處理請求,並相應地響應客戶端。我的問題是:

i。這個設置是否是一個明智的選擇,還是其他我不知道更適合我正在進行的項目的設置?

ii。人們如何去確保這種連接?我可以使用OpenSSL生成的安全證書輕鬆設置與服務器的SSL連接,但我不確定這是否是保護桌面應用程序連接的正確方法,或者此方法是否主要用於HTTPS。何時一般人應該確保連接(有沒有這種情況,例如,我所做的就是來回發送布爾值?)?討論這些問題的任何好資源?例如,我的Windows PC上安裝了很多聯網的應用程序,但我沒有看到其中許多應用程序在我的PC上安裝了安全證書。是什麼賦予了?

完全披露:我是一名C++(業餘愛好者)程序員,他使用Boost庫來滿足我的網絡編程需求,OpenSSL用於我的SSL加密。不過,我希望這能夠在不付出太多注意這些事實:)

回答

1

答案來回答:

我。讓您的應用程序與Web服務交談,然後與數據庫交談是一個更好的設置。這將數據庫從客戶端抽象出來(因此可以直接從互聯網訪問)。

ii。這取決於對系統的威脅是什麼。如果您從上述Web服務中發佈的數據是不敏感的數據,並且不是用戶特定的(例如,允許搜索公共照片庫的應用程序,那麼您的Web服務只會返回帶有URL的結果集),那麼您只需使用SSL即可獲得。其他應用程序會繞過以各種方式安裝自己的證書。他們可以從CA那裏獲得類似verisign的證書,因此您的計算機已經信任它。或者他們可以使用他們的應用程序的二進制文件部署公共證書,並在應用程序內部處理它(這是一種證書鎖定形式)。

ii第2部分如果您需要客戶端進行身份驗證,基於要確保不僅任何人都可以使用您的Web服務或支持更高級的授權模型,您需要實現一些種類的認證。這將是一個更大的問題要解決。

+0

感謝您的意見。有問題的應用程序將利用某種形式的用戶身份驗證,因此您的推薦一定會被遵守。我想我會去找這個題目的書。再次感謝。 – declay