加密web.config中的连接字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加密web.config中的连接字符串相关的知识,希望对你有一定的参考价值。
我们如何加密web.config文件中的连接字符串部分?
Rahul,将字符串从ASCII转换为base64字符串不是加密,这是您的第一个链接建议。我们可以轻松地将base64转换为ASCII。
将configsection.protectSection()与RSA密钥一起使用是适当的加密,可用于Web.config文件的各个部分。
检查此链接:http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx
请注意,我们无法在信任级别设置为中等信任的共享托管环境中加密Web.config文件。
要节省必须访问外部链接,请在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"
http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx使用ASPNET_REGIIS.EXE
http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.protectsection.aspx
在命令中运行:aspnet_regiis.exe -pef“connectionStrings”“pathToWebConfig”
或者,如果您希望以编程方式运行它,您可以创建一个进程:
string fileName = @"C:WindowsMicrosoft.NETFrameworkv4.0.30319aspnet_regiis.exe";
if (8 == IntPtr.Size
|| (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
fileName = @"C:WindowsMicrosoft.NETFramework64v4.0.30319aspnet_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;
}
}
加密对于为应用程序提供安全性非常有用。请找到以下步骤来加密web.config。
- 使用管理员权限打开命令提示符
- 在命令提示符下,输入
- cd c:ювиндовсуюцорсофт.Нетюфрамеворкювч.0.30319
- 如果您的Web Config位于“D: Articles EncryptWebConfig”目录路径中,请输入以下内容以加密ConnectionString:
- 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>
我在Windows窗体中创建了一个带有源代码的实用程序。
从这里下载文件(它的整个项目,你可以从bin文件夹运行它):File
- 从调试文件夹运行可执行文件(以管理员身份运行)
- 浏览配置文件
- 你完成了
注意:检查计算机中是否存在此文件夹:
T:Ювиндовсуюцорсофт.Нетюфрамеворкювч.0.30319
这里有一个文件有Check Gist Here的潜行
ASPNET_REGIIS,正如其他人所说。
但请记住,在考虑强度和编码要求时,RSA并非万无一失,甚至不是很强大。打破它需要几分钟。
我的情况是,我必须使用SQL服务器身份验证连接到其中一个SQL服务器,这又需要在连接字符串中以纯文本形式写入密码。
文件中的纯文本密码是错误的。更好的RSA编码。因此,当有人看到它并且不想真正想要闯入它时,他看不到密码。
但是,它只能在域内访问服务器,这可以将可能的攻击者限制在100以下,其他任何人都必须首先在域中断,如果发生连接到测试环境,则DB服务器是最少的问题。此外,在这100人中,只有大约5人拥有管理员权限,这些权限允许使用ASPNET_REGIIS彻底解密文件。
无论如何你必须相信那些。对于所有其他人来说,他们可以获得的数据价值远远低于他们获得数据所需的工作量。不值得冒着失去员工的风险。
而且,他们大多甚至不知道这件事有可能闯入。现在,即使他们以某种方式发现,他们也没有任何工作就得到明文密码。
以上是关于加密web.config中的连接字符串的主要内容,如果未能解决你的问题,请参考以下文章