2013-04-15 154 views
0

嗨,我目前正在創建一個使用c#xna的遊戲,並且將允許用戶擁有某種配置文件系統。因此,他們可以創建帳戶,登錄查看配置文件,成就等。直接連接到SQL數據庫或通過客戶端 - 服務器服務

雖然我正在測試此操作,但我正在使用SQL Server Express的本地實例。在測試中這沒什麼問題,但是在創建完成產品時,只需更改連接字符串以連接到可公開訪問的遠程SQL服務器即可,或者這會產生安全隱患。

是否有人能夠通過程序找到SQL服務器的用戶名/密碼,然後手動連接並造成嚴重破壞?

我是否應該考慮連接到代表客戶端程序查詢數據庫的服務器端應用程序,以防止客戶端直接訪問我的數據庫,或者這是不必要的抽象?

回答

0

由於連接到服務器端應用程序的安全問題會最好不要讓程序直接連接到數據庫。

首先,在公共Internet上打開SQL Server通常被認爲安全性較差,因爲它存在一些遠程攻擊。

其次,一般來說,限制每個用戶的數據庫訪問是很困難或不可行的。創建個人數據庫帳戶通常是不現實的,因此所有用戶都使用單個帳戶連接到數據庫。這個帳戶需要訪問數據庫以執行必要的功能,這意味着它也可以用來對數據庫執行任意的惡意查詢。一個溫和的可能性是UPDATE highscores SET score = 1000000000 WHERE user_id = <my user id>。我已經看到一些學校管理系統通過使用所有用戶的默認數據庫管理員用戶名和密碼並通過網絡以明文形式發送。這些不是公衆面對的,只是稍微好一些。

與此相關的一些額外的問題是:

0

How to enable SSL encryption for an instance of SQL Server by using Microsoft Management Console

連接字符串(SQL服務器2012):

Provider=SQLNCLI11;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes; 
Encrypt=yes; 

連接字符串(SQL Server 2008中):

Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes; 
Encrypt=yes; 
+0

感謝米奇,從閱讀本指南,我需要當涉及到實際部署到購買SSL證書我產品住嗎? (網絡目前不是我的強項) – user2280611