核心觀點
任何運行在用戶端的代碼(無論混淆、加殼、加密配置)最終都在用戶可控環境執行,攻擊者可通過:
- 內存掃描提取解密後的連接字符串。
- 網絡抓包 (Wireshark) 捕獲明文傳輸的 SQL 語句/結果集。
- 反編譯/動態調試繞過授權檢查。
結論:客戶端直連數據庫的安全性本質上為零。
唯一正解:中間層 (WebAPI/Service)
客戶端 (FoxPro/.NET) → HTTPS/JSON → 應用服務器 (C#/Java/Node) → 內網加密連接 → 數據庫
遷移關鍵步驟
- 梳理所有直連 SQL,抽象為業務接口 (
GetStudentList, SubmitScore 等)。
- 選型技術棧:ASP.NET Core WebAPI / Spring Boot / Node.js Express 均可快速構建。
- 服務器部署於數據庫同一 VPC,安全組僅放行服務器 IP 訪問 DB 端口。
- 客戶端改造:
SQLExec → HttpClient.PostAsync,數據序列化為 JSON。
- 認證授權:JWT Token + 角色權限,實現行級/列級數據隔離。
若暫時無法重構
- 強制數據庫連接加密:
Encrypt=True;TrustServerCertificate=False。
- 使用 Windows 整合認證,避免密碼硬編碼。
- 連接字符串存儲於 DPAPI 加密配置節 (
ProtectedConfigurationProvider)。
- 審計觸發器記錄所有 DML 操作,事後可追溯。