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

时间:2009-11-10 09:24:07

标签: .net asp.net encryption web-config

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

8 个答案:

答案 0 :(得分:12)

Rahul,将字符串从ASCII转换为base64字符串不是加密,这是您的第一个链接建议的。我们可以轻松地将base64转换为ASCII。

将configsection.protectSection()与RSA密钥一起使用是适当的加密,可用于Web.config文件的各个部分。

点击此链接:http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx

请注意,我们无法在信任级别设置为中等信任的共享托管环境中加密Web.config文件。

答案 1 :(得分:10)

答案 2 :(得分:8)

保存必须访问外部链接,在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"

答案 3 :(得分:4)

答案 4 :(得分:2)

在Command中运行: aspnet_regiis.exe -pef“connectionStrings”“pathToWebConfig”

或者,如果您希望以编程方式运行,则可以创建一个Process:

            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;
                }
            }

答案 5 :(得分:1)

加密对于为应用程序提供安全性非常有用。请找到以下步骤来加密web.config。

  1. 以管理员权限打开命令提示符
  2. 在命令提示符下,输入
  3. cd C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319
  4. 如果您的网络配置位于" D:\ Articles \ EncryptWebConfig"目录路径,然后输入以下内容来加密ConnectionString:
  5. ASPNET_REGIIS -pef" connectionStrings" " d:\文章\ EncryptWebConfig
  6. 为了更安全,我使用了其他一些东西。在我的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>
    

答案 6 :(得分:1)

我在Windows窗体中创建了一个带源代码的实用程序。

从这里下载文件(整个项目,你可以从bin文件夹运行):File

  1. 从调试文件夹(以管理员身份运行
  2. 运行可执行文件
  3. 浏览配置文件
  4. 你已经完成了
  5. 注意:检查您的计算机中是否存在此文件夹:

      

    C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \

    以下是Check Gist Here

    文件的潜行信息

答案 7 :(得分:0)

ASPNET_REGIIS,正如其他人所说。

但是请记住,在考虑编码的强度和要求时,RSA并非万无一失,甚至不是非常强大。打破它需要几分钟。

我的情况是,我必须使用SQL Server身份验证连接到其中一台SQL Server,这又需要在连接字符串中以纯文本形式编写密码。

文件中的纯文本密码是错误的。更好的RSA编码。因此,当有人看着它而又不想真正破解它时,他看不到密码。

但是,它位于只能从域内部访问的服务器上,这将可能的攻击者限制在100个以下,其他任何人都必须首先闯入该域,如果发生这种情况,则连接到测试环境数据库服务器的原因是最少的问题。同样,在这100个人中,只有大约5个人具有管理员特权,该特权赋予使用ASPNET_REGIIS彻底解密文件的权限。

无论如何,您都必须信任那些人。对于所有其他人,他们可以获得的数据的价值远远小于获得数据所需的工作。放弃成为雇员也不值得冒险。

而且,他们大多甚至不知道这件事可能被闯入。而现在,即使他们以某种方式找到了答案,他们也不会在没有任何工作的情况下获得纯文本密码。