.net 在web.config中加密连接字符串

eivgtgni  于 2023-08-08  发布在  .NET
关注(0)|答案(8)|浏览(106)

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

ghhaqwfi

ghhaqwfi1#

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

yhived7q

yhived7q2#

Rahul,将字符串从ASCII转换为base64字符串并不是加密,这是你的第一个链接建议的。我们可以很容易地将base64转换为ASCII。
将configsection.protectSection()与RSA密钥一起使用是一种正确的加密方法,适用于Web.config文件的各个部分。
检查此链接:http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx
请注意,我们不能加密Web.config文件在共享托管环境中的信任级别设置为中等信任。

4ngedf3f

4ngedf3f4#

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

字符串

gblwokeq

gblwokeq5#

加密对于为应用程序给予安全性很有用。请按照以下步骤加密web. config。
1.以管理员权限打开命令提示符
1.在命令提示下,输入

  1. cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
    1.如果您的web Config位于“D:\Articles\EncryptWebConfig”目录路径中,则输入以下内容以加密ConnectionString:
  2. 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>

字符串

2sbarzqh

2sbarzqh6#

我用源代码在windows窗体中创建了一个实用程序。
从这里下载文件(它的整个项目,你可以从bin文件夹运行它):File
1.从debug文件夹运行可执行文件(以管理员身份运行
1.浏览配置文件
1.你完了

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

C:\Windows\Microsoft.NET\Framework\v4.0.30319
这里是一个什么文件有Check Gist Here偷偷

yr9zkbsy

yr9zkbsy7#

ASPNET_REGIIS,正如其他人所说。
但是请记住,当考虑编码的强度和要求时,RSA并不是万无一失的,甚至不是很强。打破它需要几分钟。
我的情况是,我必须使用SQL服务器身份验证连接到其中一个SQL服务器,这反过来又要求在连接字符串中以纯文本形式写入密码。
文件中的纯文本密码是错误的。更好的RSA编码。因此,当有人看它,并不真的想闯入它,他没有看到密码。
然而,它位于只能从域内访问的服务器上,这将可能的攻击者限制在100以下,其他任何人都必须首先闯入域,如果发生这种情况,连接到测试环境DB服务器是最小的问题。此外,在这100人中,只有大约5人具有管理员权限,这给予了使用ASPNET_REGIIS完全解密文件的权限。
你无论如何都要相信他们。对于所有其他人来说,他们可以获得的数据的价值远远低于他们必须投入的工作。也不值得冒着不再是雇员的风险。
而且,他们大多数人甚至不知道这东西是可以闯入的。而现在,即使他们以某种方式发现了,他们不会得到一个纯文本密码没有任何工作。

5fjcxozz

5fjcxozz8#

如果您没有访问命令提示符,这是一个常见的情况,大多数网站所有者谁托管他们的网站与第三方托管提供商。你可参阅以下文章─
https://www.dbdocs.net/asp/encrypt-the-connection-string-in-asp-net-web-config
此方法是通用的,允许您在本地系统和Web服务器环境中使用它,在这些环境中,您可能无法以管理员权限直接访问命令提示符。

相关问题