2013-10-18 209 views
0

我有一個.NET應用程序託管在一個Web服務器和一個MSSQL數據庫託管在不同的服務器上。在web.config中連接到MSSQL時沒有連接字符串

作爲安全檢查清單的一部分,我不應該在我的web.config文件中提到數據庫證書(連接字符串)。 (不在任何文件中)

如何連接到數據庫而沒有在我的web.config中提到的細節。

任何幫助將不勝感激。

謝謝

+0

你可以搬到Azure嗎?您可以將連接字符串放入角色配置中。這不會被存儲在服務器上的文件中。 AWS上可能有類似的情況。 –

+0

保持連接字符串散列值,這是你最好的選擇 –

回答

1

您有幾個選項。

  1. 您可以在SQL Server和IIS應用程序池之間使用基於服務的帳戶。這將允許Windows無需密碼即可處理所有身份驗證。 Stack Overflow question on this
  2. Encrypt the web.config
  3. 將連接字符串放入代碼中。然後,當您創建SqlConnection或任何其他類型的數據庫連接時,請使用重載傳入連接字符串。但是這實際上並不比web.config好,因爲您可以反編譯程序集並查看連接字符串。
+0

加密web.config會給安全性帶來誤解。鑑於對機器的訪問,可以使用以下命令對其進行解密:aspnet_regiis -pd「connectionStrings」-app「/ SampleApplication」 –

+0

@ShirazBhaiji完全同意。加密web.config是一種保護文件的方法,當某人有權訪問該文件時,該文件不具有對服務器或用於加密該文件的密鑰對的物理訪問權限。任何加密都是如此。 –

+1

@ShirazBhaiji,如果用戶有文件訪問服務器,他們可以獲得比webconfig數據更多的東西,比如dll並使用反射來獲取源代碼。 – gunr2171

1

你可以存儲連接字符串:

  • 硬盤在你的代碼
  • 在註冊表項

你應該有不包含用戶名的連接字符串編碼和密碼,而是使用可信連接,該連接使用應用程序池的標識。

+0

你的代碼中的硬編碼仍然在服務器上的一個文件中。可能它不像web配置那麼明顯,但它仍然存在,任何人都可以看到它們是否反編譯你的程序集。 –