No importa dónde se almacenan los datos cifrados, importa cómo se cifran.
Las secciones cifradas en un web.config normalmente se cifran con la API de protección de datos , que Es extremadamente difícil de descifrar sin comprometer toda la máquina. También puede usar un contenedor de claves RSA, que es similar (es difícil sacarlos de la máquina).
Si desea almacenar la cadena cifrada en la DLL, está bien, supongo, aunque no es intrínsecamente más seguro que un cifrado web.config (cualquiera puede ver esa DLL con Reflector ), y obviamente es más difícil de cambiar (necesitarías recompilarlo). Pero nuevamente, lo que es mucho más importante es cómo se generó esa cadena encriptada; Es de suponer que no está utilizando los mismos proveedores que usaría para un web.config cifrado, así que, ¿qué está utilizando?
Un esquema de cifrado es tan fuerte como la clave privada o el secreto compartido. Si esa clave está también almacenada en su ensamblaje, entonces es posible que no tenga ningún cifrado. Si está almacenado en alguna base de datos externa, entonces se plantea la cuestión de cómo se protege la cadena de conexión de esa . Esto realmente solo puede llevar a una seguridad general más débil.
Por otra parte, si usted fuera un proveedor de servicios y la cadena de conexión estuviera encriptada con una contraseña de usuario , sería más seguro que usar una máquina estática llave. Nuevamente, si está utilizando contraseñas de usuario para cifrar, es bastante improbable que esté codificando los datos cifrados en su ensamblaje, ya que debe generarse y almacenarse en respuesta a la acción del usuario (no del desarrollador). / p>
Realmente no puedo pensar en muchas situaciones en las que la codificación de una cadena de conexión (encriptada) en la DLL sea más segura que encriptar la sección web.config relevante. En el mejor de los casos, solo se añaden inconvenientes, en el peor de los casos, se basa en una seguridad personalizada y llena de agujeros. Hágase un favor y haga lo que recomienda Microsoft: simplemente cifre su web.config si hay datos confidenciales allí.