
我有一個直接連接到 SQL Server 的桌面應用程序,我看到很多帖子說你不應該將 SQL Server 直接暴露到互聯網,但沒有人說為什麼。一些背景:
- 可擴展性、負載平衡和其他效能標準對於我的場景來說不是問題
- 我的應用程式需要在本機上工作(使用本機 SQL Server)或使用遠端儲存庫,以便多個使用者可以共用資料(託管 SQL Server,這是我的問題)
我注意到連接到 SQL Azure 看起來非常像標準的遠端 SQL Server(http://www.windowsazure.com/en-us/develop/net/how-to-guides/sql-database/#using-sql-server)
我知道打開任何連接埠都是一個繼承漏洞,但這並不是唯一的原因。我一定錯過了一些東西,但我不確定什麼?
除了將應用程式的下半部分部署為 Web 服務之外,真正的替代方案是什麼?
答案1
原因有很多,但最相關的一個是,在 SQL Server 和網路安全性方面都沒有經驗的人可能會犯一個或多個常見錯誤。
例如,您可以使用「sa」SQL 登入名稱進行連接,這是預設的系統管理員帳戶,並且可以完全控制 SQL Server。
或者您可能使用另一個具有弱密碼的 SQL Server 登入名,因此攻擊者可以嘗試暴力攻擊來提升其權限。
或者,您可以啟用一些預設的唯讀使用者帳戶(對於此應用程式或任何其他應用程式),攻擊者和利用腳本將主動掃描該帳戶,以便他們可以從您的資料庫檢索資料。
一些保護自己免受最基本遠程攻擊的好措施:
- 限制與您信任的 IP 和客戶端的連接
- 盡可能使用 Windows 整合式身份驗證,並停用任何弱密碼登入
- 如果必須使用 SQL Server 驗證,請重新命名/停用 sa 登入名稱並為所有登入名稱設定強密碼(>10 個字元)