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

问题描述 投票:24回答:8

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

.net asp.net encryption web-config
8个回答
12
投票

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

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

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

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


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"


2
投票

在命令中运行: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;
                }
            }

1
投票

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

  1. 使用管理员权限打开命令提示符
  2. 在命令提示符下,输入
  3. cd c:ювиндовсуюцорсофт.Нетюфрамеворкювч.0.30319
  4. 如果您的Web Config位于“D:\ Articles \ EncryptWebConfig”目录路径中,请输入以下内容以加密ConnectionString:
  5. ASPNET_REGIIS -pef “的ConnectionStrings”“500:\文章\ 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>

1
投票

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

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

  1. 从调试文件夹运行可执行文件(以管理员身份运行)
  2. 浏览配置文件
  3. 你完成了

注意:检查计算机中是否存在此文件夹:

T:Ювиндовсуюцорсофт.Нетюфрамеворкювч.0.30319

这里有一个文件有Check Gist Here的潜行


0
投票

ASPNET_REGIIS,正如其他人所说。

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

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

文件中的纯文本密码是错误的。更好的RSA编码。因此,当有人看到它并且不想真正想要闯入它时,他看不到密码。

但是,它只能在域内访问服务器,这可以将可能的攻击者限制在100以下,其他任何人都必须首先在域中断,如果发生连接到测试环境,则DB服务器是最少的问题。此外,在这100人中,只有大约5人拥有管理员权限,这些权限允许使用ASPNET_REGIIS彻底解密文件。

无论如何你必须相信那些。对于所有其他人来说,他们可以获得的数据价值远远低于他们获得数据所需的工作量。不值得冒着失去员工的风险。

而且,他们大多甚至不知道这件事有可能闯入。现在,即使他们以某种方式发现,他们也没有任何工作就得到明文密码。

© www.soinside.com 2019 - 2024. All rights reserved.