2009-08-11 7 views

Respuesta

7

Supongo que desea encriptar la salida del registro. En ese caso, tendrá que escribir su propio Appender que pueda manejar el cifrado. Sugeriría averiguar qué mecanismo de salida pretendes usar sin cifrado (es decir, FileAppender, EventLogAppender, etc.), y luego extender ese apéndice y anular la funcionalidad que realmente escribe el resultado.

La documentación de referencia sobre los appenders se puede encontrar en here.

Por ejemplo, extienda FileAppender con EncryptedFileAppender y anule/implemente los miembros que necesita para enganchar en la escritura del archivo.

Como alternativa, podría extender desde IAppender y crear un appender completamente desde cero. Eso le daría más control, pero podría requerir más trabajo si todo lo que intenta hacer es encriptar su carga útil.

+0

Gracias por sus buenos consejos. Entonces, quieres decir, será mejor que encripte mi contenido antes de agregarlo a mis registros implementando un contenedor que haga el trabajo. Entonces, ¿el contenido de mis registros estaría todo encriptado sin configurar nada en el log4net? – paradisonoir

+0

Debería poder enganchar en donde realmente se agrega cada artículo de línea al archivo de registro, lo que le permite encriptar esa línea completa. Una vez que hayas logrado eso, entonces necesitarías configurar log4net para usar tu Appender en lugar de lo que estabas usando antes. En este caso, el EncryptedFileAppender – Joseph

+0

@Joseph, ¿está sugiriendo encriptarlo para cada línea de registros, o cuando se transfiere a un archivo diferente (cuando alcanza el tamaño máximo de los registros)? – paradisonoir

2

Si está tratando de evitar que los usuarios lo lean en la web, puede cambiar el nombre del archivo en el que está escribiendo los registros a una extensión que no permita que su sitio web la atienda. De esta forma, los usuarios no pueden adivinar su archivo de registro y acceder a él a través de la web.

Si está tratando de evitar que los usuarios que inicien sesión en el servidor vean el contenido del archivo, puede usar el control de permisos para bloquear el archivo para que solo los usuarios de grupos de administradores específicos puedan ver los contenidos.

Como alternativa, puede iniciar sesión en la base de datos para que no haya ningún archivo que deba asegurarse.

3

No hay soporte listo para usar para el cifrado. Entonces, como otros han declarado aquí, tendrás que implementarlo tú mismo.

Dicho esto, sugeriría que subclases un ForwardingAppender para hacer la encriptación. Esto básicamente le permitirá colocar su appender "en frente" de cualquier apéndice estándar que elija para hacer la escritura real en el disco.

1

que se dan cuenta de que esta respuesta viene unos pocos años después de la fecha original, pero después de enfrentar el mismo problema que decidieron crear un paquete de código abierto para hacer precisamente este trabajo: Log4net mensaje cifrador

El código fuente puede encontrar en GitHub

y el paquete se puede descargar desde NuGet

+0

Gracias por compartir, estaba buscando una solución similar para nlog, ahora al menos tengo una implementación de ref a seguir. Por cierto, planeé usar la clave pública/privada para cifrar una clave aleatoria para mejorar aún más la seguridad en lugar de una clave simétrica de corrección, ya que cualquier persona con acceso al registro también puede obtener la clave de app.config – faulty

+1

¡Me alegro de poder ayudar! El caso de uso principal para mí se centró en los registros almacenados en una base de datos o fuera del servidor inicial. ¡Mi idea era que si un atacante podía acceder al archivo web.config, probablemente sería un gesto inútil cifrar los registros! Incluso estaba considerando llevar la implementación a NLog también, pero la vida se interpuso en el camino. Si logras crear el proyecto y abrirlo, ¡házmelo saber porque estaría particularmente interesado! –

+1

La otra cosa para mencionar es que la sección de la clave de encriptación en el web.config debe ser encriptada con Aspnet_regiis. Esto significaría que la clave no está en texto plano y sería algo más segura. –

Cuestiones relacionadas