2010-03-17 75 views
19

我已將我的數據庫,用戶名和密碼的名稱寫入我的web.config文件中作爲連接字符串。在C#中的web.config文件中加密連接字符串

我想加密這些數據。我該怎麼做?

<connectionStrings> 
    <add name="ISP_ConnectionString" connectionString="Data Source=JIGAR; 
      Initial Catalog=ISP;Integrated Security=True; 
      User ID=jigar;Password=jigar123; 
      providerName="System.Data.SqlClient" /> 
</connectionStrings> 
+0

值得一看:http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx – Brett 2010-03-17 13:08:03

回答

5

我一個特定的應用程序,我調用下面的程序在啓動時:

Private Sub CheckConfigFile() 
    Dim config As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 
    Dim sec As ConfigurationSection = config.AppSettings 

    If sec IsNot Nothing Then 
     If sec.SectionInformation.IsProtected = False Then 
      Debug.Write("Encrypting the application settings...") 
      sec.SectionInformation.ProtectSection(String.Empty) 
      sec.SectionInformation.ForceSave = True 
      config.Save(ConfigurationSaveMode.Full) 
      Debug.WriteLine("done!") 
     End If 
    End If 
End Sub 
+14

如果有人闖入您的網絡服務器,在應用程序啓動時加密它並不能幫助您。它在部署時應該被加密。 – 2010-03-17 14:15:50

+4

+1給出一個答案,而不僅僅是一個鏈接。 – 2010-09-29 22:54:53

+0

非常好。不要在啓動時運行它,請創建一個單獨的ASPX頁面,您可以根據需要運行此代碼(在部署之後)。對於具有「<信任級別=」中等「/>」的人,在運行它之前臨時設置「<信任級別=」完整「/>」,然後在完成時恢復爲「中等」。 – 2014-04-14 23:25:10

15

您可以只使用apnet_regiis工具來做到這一點,只是做

C:\WINDOWS\Microsoft.Net\Framework(64)\(.Net version)\aspnet_regiis -pe "connectionStrings" 

特定應用程序,您可以使用應用程序參數-app 應用程序名稱,並且對於特定站點,您還可以使用站點參數「-site 」站點編號爲「。

欲瞭解更多詳情,請參閱http://msdn.microsoft.com/en-us/library/dtkwfdky.aspx

請注意,這僅適用於Web應用程序,不適用於Windows應用程序。

另請注意,您必須使用提升特權(「以管理員身份運行」)從命令提示符運行它。

+1

它使用專用於計算機的DPAPI密鑰來加密連接字符串。在webfarm環境中,這會工作嗎? – Dhanuka777 2015-07-15 12:07:50

+0

@Dhanuka爲什麼不應該呢? – 2015-07-16 19:35:32

+1

回答我自己的問題,好吧,它應該工作,如果加密是在兩個服務器分開完成。我想到的情況是,你不能在服務器A中使用加密的webconfig文件在服務器B中使用。 – Dhanuka777 2015-07-17 04:54:52

相關問題