簡體   English   中英

最佳實踐:將 WPF 連接到遠程 SQL 數據庫

[英]Best practice: Connect WPF to remote SQL database

我知道關於這個話題有很多問題,但是經過四天的閱讀和谷歌搜索后,我有點卡住了,需要有人為我澄清一些事情。

我的情況:

我用 C# 開發了一個 WPF 應用程序。 此應用程序需要連接到數據庫,因為它存儲用戶帳戶數據和其他數據。 到目前為止,我已經通過設置數據源並使用 Fluent NHibernate 進行映射和會話來處理 Visual Studio 環境中的本地數據庫。 現在我想通過 ClickOnce 將應用程序分發給用戶,所以我需要從本地數據庫切換到在線數據庫。

我有一個網絡服務器(Debian 8 Jessie 64Bit,內核版本 3.16.0-4-amd64 (SMP))、SSH 訪問和訪問 i-MSCP 1.3.16 平台來管理服務器。 我在服務器的域之一和 sql-user 中創建了一個數據庫,我可以訪問 phpmyadmin。 我已經按照步驟授予任何 IP 的遠程訪問權限,如 SANDHYALAL KUMAR 在此處所述。 第一個問題:如何檢查現在是否成功授予遠程訪問權限。 因為當執行mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; 我得到0 rows affected. 通過 Putty 控制台?

第二個也是更重要的問題:我現在如何將我的 WPF 連接到我的服務器。 我已經讀過,由於密碼安全和數據庫安全,我不應該直接連接到服務器,如下所示:

            ISessionFactory sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2012
              .ConnectionString(c => c
                  .Server("SSS")
                  .Database("DDD")
                  .Username("UUU")
                  .Password("PPP")
                  ).ShowSql()
            )
            .Mappings(m =>
                      m.FluentMappings
                          .AddFromAssemblyOf<User>())
            .ExposeConfiguration(cfg => new SchemaExport(cfg)
             .Create(false, false))
            .BuildSessionFactory();
        return sessionFactory.OpenSession();

但是,我不認為上述解決方案對我有用,因為我沒有在線 MSSQL Server,對嗎? 還是我需要配置我現有的服務器?

是否有特定的層或 API 可以解決我的問題。 WCF、REST 或 ADO.Net 是我的解決方案嗎? 我真的被所有這些不同的名字困住了,所以我真的很感謝關於我的兩個問題的一些解釋和建議。

你的情況和我的情況幾乎一樣。 我的應用程序也是 WPF(clickonce)並連接到 Microsoft Azure Cloud SQL Server。 我也掙扎了好幾天,因為如您所知,安全始終是最重要的。

將密碼放在桌面應用程序和分發中意味着向黑客提供密碼。 就像您評論的那樣,使用 WCF 設置一個層並使 WCF 保存非對稱(如 RSA)編碼的密碼。 然后,服務器將僅使用非對稱密鑰對用戶進行身份驗證以進行解密。 此私鑰僅存在於服務器中。

第一個問題的答案)您可以編寫一個 SELECT 查詢來確認哪些登錄名、用戶具有這些角色、啟用或不啟用訪問的權限。 我確信互聯網上有很多有用的例子。

希望這有助於您的理解..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM