首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C# WinForm 連線遠端 SQL Server:部署與連線字串安全實務

     編輯:程式設計疑難解答

問題場景

  • 本機 app.config 連線字串指向 localhost 或區域網 IP,本機正常。
  • 複製到他機器:若仍用 localhost 會連自己機器 (失敗);若用公網 IP 又連不上。
  • 發布時連線字串明文存放 app.config,帳密外洩風險。

連線失敗排查清單

  1. 網路連通:客戶端能 ping / telnet IP 1433 通。
  2. SQL Server 設定:
     ① SQL Server Configuration Manager → TCP/IP 啟用,IPAll Port 1433。
     ② SSMS → 伺服器屬性 → 連線 → 允許遠端連線。
     ③ 防火牆開放 1433 (或自訂埠)。
  3. 認證模式:混合模式 (SQL Server + Windows),且建立 SQL 登入帳號。
  4. 連線字串:Server=公網IP,埠;Database=DB;User Id=uid;Password=pwd;TrustServerCertificate=True;

部署最佳實踐

程式碼範例:啟動時組裝加密連線字串

string connStr = ConfigurationManager.ConnectionStrings["Default"].ConnectionString;
// 若密碼為佔位符 {PWD},從安全存儲讀取替換
if (connStr.Contains("{PWD}")) {
    string pwd = SecureStore.Get("SqlPwd"); // 自行實作 DPAPI/KeyVault 讀取
    connStr = connStr.Replace("{PWD}", pwd);
}
using (var cn = new SqlConnection(connStr)) { cn.Open(); ... }

總結

遠端連線先通網路/防火牆/SQL 設定三關。發布時**絕不**將明文密碼寫在隨程式分發的 config。採用 Config Transform + 使用者設定/加密存儲/雲端密鑰保管,做到原始碼無密碼、部署自動注入。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
階段做法
開發app.config 用本機/區網連線,不提交密碼 (用 Integrated Security=True 或本地帳號)。
建置/發布使用 Config Transformation (Web.config 轉換語法同樣適用 App.config) 或 使用者設定 (Settings.settings, Scope=User) 在首次執行提示輸入。
生產連線字串**加密** (aspnet_regiis -pef 或 DPAPI),或存於 **Azure Key Vault / 環境變數**,啟動時讀取組裝。