我们如何加密web.config文件中的连接字符串部分?
答案 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)
见
Encrypting Connection Strings in web.config file
Securing connection strings and making secure authentication method
答案 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)
使用aspnet_regiis.exe http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx
http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.protectsection.aspx
答案 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。
为了更安全,我使用了其他一些东西。在我的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
注意:检查您的计算机中是否存在此文件夹:
文件的潜行信息C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \
答案 7 :(得分:0)
ASPNET_REGIIS,正如其他人所说。
但是请记住,在考虑编码的强度和要求时,RSA并非万无一失,甚至不是非常强大。打破它需要几分钟。
我的情况是,我必须使用SQL Server身份验证连接到其中一台SQL Server,这又需要在连接字符串中以纯文本形式编写密码。
文件中的纯文本密码是错误的。更好的RSA编码。因此,当有人看着它而又不想真正破解它时,他看不到密码。
但是,它位于只能从域内部访问的服务器上,这将可能的攻击者限制在100个以下,其他任何人都必须首先闯入该域,如果发生这种情况,则连接到测试环境数据库服务器的原因是最少的问题。同样,在这100个人中,只有大约5个人具有管理员特权,该特权赋予使用ASPNET_REGIIS彻底解密文件的权限。
无论如何,您都必须信任那些人。对于所有其他人,他们可以获得的数据的价值远远小于获得数据所需的工作。放弃成为雇员也不值得冒险。
而且,他们大多甚至不知道这件事可能被闯入。而现在,即使他们以某种方式找到了答案,他们也不会在没有任何工作的情况下获得纯文本密码。