gpt4 book ai didi

.net - 为什么 App.config 是一个比源代码更安全的存储连接字符串的位置?

转载 作者:行者123 更新时间:2023-12-01 02:30:12 27 4
gpt4 key购买 nike

简单的问题,我知道在源代码中以纯文本形式存储连接字符串是一个坏主意,因为有人可以使用 Ildasm.exe 之类的工具来反编译并随后查看您的连接字符串,但是为什么使用 App.config 更安全?

当然,这个配置文件就在你的可执行文件旁边,所以如果有人可以访问你的可执行文件进行反编译,他们也可以访问你的配置文件,从而访问你的连接字符串。

所以我的问题是为什么 App.config 是一个比代码更安全的存储连接字符串的位置?

最佳答案

您可以保护配置文件中的任何信息。此链接指向 Walkthrough: Encrypting Configuration Information Using Protected Configuration解释如何

更新:
抱歉链接断开,我更新它并添加文章标题。解决方案是使用 RsaProtectedConfigurationProvider .我在 WebUtility 助手类中创建了一个简单的方法:

public static void CheckWebConfigSecured(string webPath, params string[] sections)
{
Configuration confg = WebConfigurationManager.OpenWebConfiguration(webPath);
bool done = false;
foreach (string section in sections)
{
ConfigurationSection confSection = confg.GetSection(section);
if ((confSection != null) && !confSection.SectionInformation.IsProtected)
{
confSection.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
done = true;
}
}
if (done)
{
confg.Save();
}
}

我从 打来的电话Global.asax.cs Application_BeginRequest
WebUtility.CheckWebConfigSecured(
context.Request.ApplicationPath,
"connectionStrings",
"appSettings",
"log4net");

其中 connectionStrings、appSettings 和 log4net 是我想要保护的 web.config 部分。

因此,在部署后第一次访问站点后,服务器上 Web.config 文件中的这些部分类似于以下示例:
<appSettings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>YbjvJF6IpTaEFb58ag1O ... HJm1uzA=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>mzJ2PoteOG7ZpAs922sounmG ... 02D3ZiM1PCliSw==</CipherValue>
</CipherData>
</EncryptedData>
</appSettings>

关于.net - 为什么 App.config 是一个比源代码更安全的存储连接字符串的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13606922/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com