Как мы можем зашифровать секцию строки подключения в файле web.config?
Шифрование строки подключения в web.config
Ответ 1
См
Шифрование строк подключения в файле web.config
Защита строк подключения и создание безопасного метода проверки подлинности
Ответ 2
Rahul, преобразование строки из строки ASCII в base64 не является шифрованием, что и предлагает ваша первая ссылка. Мы можем легко преобразовать base64 в ASCII.
Использование configsection.protectSection() с ключом RSA - это правильное шифрование, доступное для разделов файла Web.config.
Проверьте эту ссылку: http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx
Обратите внимание, что мы не можем зашифровать файл Web.config в среде общедоступного хостинга, где для уровня доверия установлен средний уровень доверия.
Ответ 3
Чтобы сохранить доступ к внешним ссылкам, в 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"
Ответ 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
Ответ 5
Запустите это в команде: 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;
}
}
Ответ 6
Шифрование полезно для обеспечения безопасности приложения. Для шифрования web.config выполните следующие действия.
- Откройте командную строку с правами администратора.
- В командной строке введите
- cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
- Если ваш веб-конфигуратор находится в каталоге каталога "D:\Articles\EncryptWebConfig", введите следующее для шифрования ConnectionString:
- ASPNET_REGIIS -pef "connectionStrings" "D:\Articles\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>
Ответ 7
Я создал утилиту в формах Windows с исходным кодом.
Загрузите файл отсюда (весь проект, вы можете запустить его из папки bin): File
- Запустите исполняемый файл из папки отладки (Запуск от имени администратора)
- Просмотрите файл конфигурации
- Вы сделали
Примечание. Проверьте, существует ли эта папка на вашем компьютере:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\
Вот пример того, что файл имеет Check Gist Здесь
Ответ 8
ASPNET_REGIIS, как говорят другие.
Но помните, что, учитывая прочность и требования к кодированию, RSA не является надежным и даже не очень надежным. Ломка занимает минуты.
В моем случае я должен подключиться к одному из серверов SQL с использованием аутентификации сервера SQL, что, в свою очередь, требует записи пароля в виде простого текста в строке подключения.
Обычные текстовые пароли в файлах просто неверны. Лучше закодировать RSA. Поэтому, когда кто-то смотрит на него и не хочет взламывать его, он не видит пароль.
Тем не менее, он находится на сервере, доступном только из домена, что ограничивает число возможных злоумышленников менее 100, кому-то еще придется сначала взломать домен, и если это произойдет, подключение к серверу БД в тестовой среде является наименьшим из проблемы. Кроме того, из этих 100 человек только около 5 имеют права администратора, которые дают право на чистую расшифровку файла с помощью ASPNET_REGIIS.
Вы должны доверять этим в любом случае. Для всех остальных ценность данных, которые они могут получить, намного меньше, чем работа, которую они должны были бы потратить на их получение. Не стоит и того, чтобы перестать быть сотрудником.
Кроме того, они в основном даже не знают о том, что эта вещь может быть взломана. И теперь, даже если они каким-то образом узнают, они не получат простой текстовый пароль без какой-либо работы.