У меня есть следующий класс для шифрования соединения строкАвтоматическое шифровать строку соединения в Web.config
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Configuration;
using System.Web.Security;
using System.Configuration;
namespace App.WebUI.Infrastructure
{
public static class ConnectionStringEncryption
{
private static readonly string Path = HttpRuntime.AppDomainAppVirtualPath;
public static void EncryptConnString()
{
Configuration config = WebConfigurationManager.OpenWebConfiguration(Path);
ConfigurationSection section = config.GetSection("connectionStrings");
if (!section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
config.Save();
}
}
public static void DecryptConnString()
{
Configuration config = WebConfigurationManager.OpenWebConfiguration(Path);
ConfigurationSection section = config.GetSection("connectionStrings");
if (section.SectionInformation.IsProtected)
{
section.SectionInformation.UnprotectSection();
config.Save();
}
}
}
}
В Global.asax.cs
if(!System.Diagnostics.Debugger.IsAttached)
ConnectionStringEncryption.EncryptConnString();
Когда я попробовать это местное без «если (! System.Diagnostics.Debugger.IsAttached) «отлично работает, но когда я публикую, я получаю следующую ошибку. Отказано в доступе к пути «... \ web.config».
У меня нет доступа к разрешению на изменение файлов на сервере, и я не хочу.
Есть ли другой способ добиться этого без изменения прав на разрешение?
Благодаря
Вы пишете на диск с помощью этого кода. У учетной записи, на которой запущен пул приложений для веб-сайта, нет разрешения на это. Так что не делай этого. Существуют способы защиты такого рода информации. Чтение и запись на диск - это не очень хорошая идея. Лучше спросить «Я (думаю, мне нужно) писать зашифрованные/защищенные строки подключения на диск из-за XYZ. Как мне это сделать с моего сайта?» – Will
Каков наилучший способ шифрования автоматической строки подключения в web.config при каждом опубликовании? Это одно из требований. Не хотите использовать инструмент aspnet_regiis.exe. – Valter
* Вы не можете *, если ... Нет, даже не хочу говорить. Предоставление прав на запись в пул приложений для вашего сайта в каталоге *** очень плохо. *** Зачем вам это нужно, чтобы ENCRYPT? Разве вы не должны публиковать зашифрованную версию и просто расшифровывать ее? Это просто странно. – Will