[英]Encrypting Connection String in 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"
在命令中運行: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;
}
}
加密對於為應用程序提供安全性非常有用。 請找到以下步驟來加密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>
我在Windows窗體中創建了一個帶有源代碼的實用程序。
從這里下載文件(它的整個項目,你可以從bin文件夾運行它): 文件
注意:檢查計算機中是否存在此文件夾:
C:\\ WINDOWS \\ Microsoft.NET \\框架\\ v4.0.30319 \\
以下是Check Gist Here的文件
ASPNET_REGIIS,正如其他人所說。
但請記住,在考慮強度和編碼要求時,RSA並非萬無一失,甚至不是很強大。 打破它需要幾分鍾。
我的情況是,我必須使用SQL服務器身份驗證連接到其中一個SQL服務器,這又需要在連接字符串中以純文本形式寫入密碼。
文件中的純文本密碼是錯誤的。 更好的RSA編碼。 因此,當有人看到它並且不想真正想要闖入它時,他看不到密碼。
但是,它只能在域內訪問服務器,這可以將可能的攻擊者限制在100以下,其他任何人都必須首先在域中斷,如果發生連接到測試環境,則DB服務器是最少的問題。 此外,在這100人中,只有大約5人擁有管理員權限,這些權限允許使用ASPNET_REGIIS徹底解密文件。
無論如何你必須相信那些。 對於所有其他人來說,他們可以獲得的數據價值遠遠低於他們獲得數據所需的工作量。 不值得冒着失去員工的風險。
而且,他們大多甚至不知道這件事有可能闖入。 現在,即使他們以某種方式發現,他們也沒有任何工作就得到明文密碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.