.net - aspnet_regiis - Cifrado de la cadena de conexión en web.config
encrypt web.config aspnet_regiis (7)
¿Cómo podemos cifrar la sección de cadena de conexión en el archivo web.config?
Ejecute esto en Comando: aspnet_regiis.exe -pef "connectionStrings" "pathToWebConfig"
o, si desea que esto se ejecute programáticamente, puede crear un Proceso:
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;
}
}
He creado una utilidad en formularios de Windows con código fuente. Descargar archivo desde aquí: File
- Ejecute el archivo ejecutable desde la carpeta de depuración (Ejecutar como administrador)
- Explore el archivo de configuración
- Estás listo
Nota: compruebe si esta carpeta existe en su computadora: C: / Windows / Microsoft.NET / Framework / v4.0.30319 /
La encriptación es útil para dar seguridad a la aplicación. Encuentre los siguientes pasos para encriptar web.config.
- Abrir símbolo del sistema con privilegios de administrador
- En el símbolo del sistema, ingrese
- cd C: / Windows / Microsoft.NET / Framework / v4.0.30319
- En caso de que su configuración web esté ubicada en la ruta del directorio "D: / Articles / EncryptWebConfig", ingrese lo siguiente para encriptar ConnectionString:
- ASPNET_REGIIS -pef "connectionStrings" "D: / Articles / EncryptWebConfig
He usado otra cosa para más seguridad. En mi Web.config he agregado el siguiente código.
<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>
Para ahorrar tener que visitar enlaces externos, en C: / Windows / Microsoft.NET / Framework / v4.0.30319 (para .NET 4 / 4.5)
aspnet_regiis.exe -pe "connectionStrings" -app "/YourWebSiteName" -prov "DataProtectionConfigurationProvider"
Para descifrar la sección connectionStrings con esta herramienta, puede especificar el siguiente comando en la herramienta aspnet_iisreg.exe.
aspnet_regiis.exe -pd "connectionStrings" -app "/YouWebSiteName"
Rahul, convertir una cadena de cadena ASCII a base64 no es una encriptación, que es lo que sugiere su primer enlace. Podemos convertir fácilmente base64 a ASCII.
Usar configsection.protectSection () con una clave RSA es un cifrado adecuado que está disponible para las secciones del archivo Web.config.
Consulte este enlace: http://www.beansoftware.com/ASP.NET-Tutorials/Encrypting-Connection-String.aspx
Tenga en cuenta que no podemos cifrar el archivo Web.config en un entorno de alojamiento compartido donde el nivel de confianza está configurado en confianza media.