簡體   English   中英

加密web.config中的連接字符串

[英]Encrypting Connection String in web.config

我們如何加密web.config文件中的連接字符串部分?

Rahul,將字符串從ASCII轉換為base64字符串不是加密,這是您的第一個鏈接建議。 我們可以輕松地將base64轉換為ASCII。

將configsection.protectSection()與RSA密鑰一起使用是適當的加密,可用於Web.config文件的各個部分。

檢查此鏈接: http//www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx

請注意,我們無法在信任級別設置為中等信任的共享托管環境中加密Web.config文件。

要節省必須訪問外部鏈接,請在C:\\ Windows \\ Microsoft.NET \\ Framework \\ v4.0.30319(對於.NET 4 / 4.5)

aspnet_regiis.exe -pe "connectionStrings" -app "/YourWebSiteName" -prov "DataProtectionConfigurationProvider"

要使用此工具解密connectionStrings部分,可以在aspnet_iisreg.exe工具中指定以下命令。

aspnet_regiis.exe -pd "connectionStrings" -app "/YouWebSiteName"

在命令中運行:aspnet_regiis.exe -pef“connectionStrings”“pathToWebConfig”

或者,如果您希望以編程方式運行它,您可以創建一個進程:

            string fileName = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe";

            if (8 == IntPtr.Size
                || (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
            fileName = @"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe";

            string arguments = $"-pef \"connectionStrings\" \"{application.Path}\"";

            using (Process process = new Process())
            {
                process.EnableRaisingEvents = true;
                process.StartInfo = new ProcessStartInfo
                {
                    FileName = exeName,
                    Arguments = arguments,
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                    CreateNoWindow = true
                };

                process.Start();
                processOutput.Output = process.StandardOutput.ReadToEnd();
                bool exited = process.WaitForExit(timeoutMilliseconds);
                if (exited)
                {
                    processOutput.ExitCode = process.ExitCode;
                }
            }

加密對於為應用程序提供安全性非常有用。 請找到以下步驟來加密web.config。

  1. 使用管理員權限打開命令提示符
  2. 在命令提示符下,輸入
  3. cd C:\\ Windows \\ Microsoft.NET \\ Framework \\ v4.0.30319
  4. 如果您的Web Config位於“D:\\ Articles \\ EncryptWebConfig”目錄路徑中,請輸入以下內容以加密ConnectionString:
  5. ASPNET_REGIIS -pef“connectionStrings”“D:\\ Articles \\ EncryptWebConfig

為了更安全,我還使用了其他一些東西。 在我的Web.config中,我添加了以下代碼。

 <httpProtocol>
        <customHeaders>
            <add name="x-Frame-Option" value="Deny or SEMEORGIN" />
          <remove name="Server" />
          <remove name="X-AspNet-Version" />
          <remove name="X-AspNetMvc-Version" />
          <remove name="X-Powered-By" />              
        </customHeaders>
  </httpProtocol>

我在Windows窗體中創建了一個帶有源代碼的實用程序。

從這里下載文件(它的整個項目,你可以從bin文件夾運行它): 文件

  1. 從調試文件夾運行可執行文件(以管理員身份運行
  2. 瀏覽配置文件
  3. 你完成了

注意:檢查計算機中是否存在此文件夾:

C:\\ WINDOWS \\ Microsoft.NET \\框架\\ v4.0.30319 \\

以下是Check Gist Here的文件

ASPNET_REGIIS,正如其他人所說。

但請記住,在考慮強度和編碼要求時,RSA並非萬無一失,甚至不是很強大。 打破它需要幾分鍾。

我的情況是,我必須使用SQL服務器身份驗證連接到其中一個SQL服務器,這又需要在連接字符串中以純文本形式寫入密碼。

文件中的純文本密碼是錯誤的。 更好的RSA編碼。 因此,當有人看到它並且不想真正想要闖入它時,他看不到密碼。

但是,它只能在域內訪問服務器,這可以將可能的攻擊者限制在100以下,其他任何人都必須首先在域中斷,如果發生連接到測試環境,則DB服務器是最少的問題。 此外,在這100人中,只有大約5人擁有管理員權限,這些權限允許使用ASPNET_REGIIS徹底解密文件。

無論如何你必須相信那些。 對於所有其他人來說,他們可以獲得的數據價值遠遠低於他們獲得數據所需的工作量。 不值得冒着失去員工的風險。

而且,他們大多甚至不知道這件事有可能闖入。 現在,即使他們以某種方式發現,他們也沒有任何工作就得到明文密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM