/ / Al cifrar la cadena de conexión web.config, ¿dónde se almacena la clave? - c #, asp.net, cifrado, configuración, criptografía

Al cifrar la cadena de conexión web.config, ¿dónde se almacena la clave? - c #, asp.net, cifrado, configuración, criptografía

Al cifrar la cadena de conexión en un web.config, ¿dónde se almacena la clave?

Además, ¿necesita volver a compilar cuando cambia las credenciales de la cadena de conexión?

Respuestas

2 para la respuesta № 1

De acuerdo a esta documentación tiene dos proveedores al cifrar la configuración:

  • RSAProtectedConfigurationProvider
  • DPAPIProtectedConfigurationProvider

Tengo poco conocimiento sobre DPAPI, así que no puedoDi algo a favor o en contra. Cuando consideré utilizar el cifrado de web.config, elegí RSA y definí otro CSP para guardar mi clave de cifrado RSA. Puede configurarlo en machine.config en el elemento configProtectedData.

La página mencionada describe y le guía cómo cifrar las secciones web.config usando RSAProtectedConfigurationProvider. Al usar este proveedor, tienes dos opciones.

  • Contenedor a nivel de máquina (La clave RSA se almacenará en Documentos y configuracionesTodos los usuariosDatos de aplicaciónMicrosoftCryptoRSAMachineKeys)
  • Contenedor de claves de nivel de usuario (La clave RSA se almacenará en Documentos y configuraciones {UserName} Aplicación DataMicrosoftCryptoRSA)

La guía describe cómo usar el Aspnet_Regiis.exe Herramienta con el proveedor de configuración RSAProtectedConfiguration para cifrar secciones de su archivo de configuración.

Para responder a su segunda pregunta. No es necesario que vuelva a compilar la aplicación, pero sí tiene que descifrar la sección (cadena de conexión), cambiar las credenciales y cifrar la sección nuevamente. O reemplace web.config con uno nuevo y cifre de nuevo.

Por favor tenga en cuenta que al cifrar una sección ustedDebe tener la clave de cifrado en la misma máquina que web.config. La guía menciona cómo exportar la clave RSA de una máquina e importarla a otra para usarla en granjas de servidores web.

Pero piensa en esto por un momento: Cuando su aplicación puede descifrar web.config (porque tiene que hacerlo antes de usar la cadena de conexión), cualquiera puede hacerlo (si puede llegar a la máquina). Sé que los permisos para usar la clave se pueden configurar, etc., pero en mi opinión es una práctica incorrecta usar contraseñas en la cadena de conexión.

Una última cosa. los Aspnet_Regiis.exe La herramienta mencionada en la guía anterior solo puede cifrar web.config. Si tiene app.config y desea cifrarlo, mire esta pregunta tan.


0 para la respuesta № 2

Puedo responder la segunda pregunta, pero no la primera.

No necesita volver a compilar cuando cambia las credenciales de la cadena de conexión, porque web.config Se carga dinámicamente.


0 para la respuesta № 3

Puede almacenarlo donde quiera, solo que no en el web.config. sugerencias:
1. en un archivo de configuración diferente.
2. registro.
3. duro codificado.

Probablemente iría por la primera opción.