Estoy a punto de escribir las pautas de la compañía sobre lo que nunca debe aparecer en los registros (seguimiento de una aplicación). De hecho, algunos desarrolladores intentan incluir la mayor cantidad de información posible en el rastreo, lo que hace que sea riesgoso almacenar esos registros y extremadamente peligroso enviarlos , especialmente cuando el cliente no sabe que esta información está almacenada, porque a ella nunca le importó. y nunca lea documentación y / o mensajes de advertencia.
Por ejemplo, cuando se trata de archivos, algunos desarrolladores están tentados a rastrear los nombres de los archivos . Por ejemplo, antes de agregar el nombre de archivo a un directorio, si rastreamos todo por error, será fácil notar, por ejemplo, que el nombre agregado es demasiado largo y que el error en el código fue olvidar verificar la longitud del cadena concatenada Es útil, pero se trata de datos confidenciales y nunca debe aparecer en los registros .
Del mismo modo:
- contraseñas ,
- Direcciones IP e información de red (dirección MAC, nombre de host, etc.) ¹,
- Accesos a bases de datos,
- Entrada directa del usuario y datos comerciales almacenados
nunca debe aparecer en el rastro.
Entonces, ¿qué otro tipo de información debe ser desterrada de los registros? ¿Hay alguna guía ya escrita que pueda usar?
¹ Obviamente, no estoy hablando de cosas como IIS o registros de Apache. De lo que estoy hablando es del tipo de información que se recopila con la única intención de depurar la aplicación en sí misma, no para rastrear la actividad de entidades no confiables.
Editar: Gracias por sus respuestas y sus comentarios. Como mi pregunta no es demasiado precisa, intentaré responder las preguntas formuladas en los comentarios:
- ¿Qué estoy haciendo con los registros?
Los registros de la aplicación pueden almacenarse en la memoria, lo que significa, ya sea en forma simple en el disco duro en localhost, en una base de datos, nuevamente en forma simple o en eventos de Windows. En todos los casos, la preocupación es que esas fuentes pueden no ser lo suficientemente seguras. Por ejemplo, cuando un cliente ejecuta una aplicación y esta aplicación almacena registros en un archivo de texto sin formato en el directorio temporal, cualquier persona que tenga acceso físico a la PC puede leer esos registros.
Los registros de la aplicación también pueden enviarse a través de Internet. Por ejemplo, si un cliente tiene un problema con una aplicación, podemos pedirle que ejecute esta aplicación en modo de seguimiento completo y que nos envíe el archivo de registro. Además, algunas aplicaciones pueden enviarnos automáticamente el informe de bloqueo (e incluso si hay advertencias sobre datos confidenciales, en la mayoría de los casos los clientes no los leen).
- ¿Estoy hablando de campos específicos?
No. Estoy trabajando solo en aplicaciones comerciales generales, por lo que los únicos datos confidenciales son los datos comerciales. No hay nada relacionado con la salud u otros campos cubiertos por regulaciones específicas. Pero gracias por hablar sobre eso, probablemente debería echar un vistazo a esos campos para obtener algunas pistas sobre lo que puedo incluir en las pautas.
- ¿No es más fácil encriptar los datos?
No. Haría que cada aplicación sea mucho más difícil, especialmente si queremos usar diagnósticos de C # y TraceSource
. También requeriría administrar autorizaciones, lo cual no es lo más fácil de hacer. Finalmente, si estamos hablando de los registros que nos envía un cliente, debemos poder leer los registros, pero sin tener acceso a datos confidenciales. Entonces, técnicamente, es más fácil nunca incluir información confidencial en los registros y nunca preocuparse por cómo y dónde se almacenan esos registros.
fuente
debug
un nombre de archivo, pero no parainfo
un nombre de archivo.Respuestas:
Creo que la mejor manera de manejar esto es tratar los archivos de registro como simplemente otra interfaz de usuario para la aplicación. El hecho de que la información se almacene en archivos de texto no hace que el contenido sea diferente de la información que se muestra en las pantallas normales de la interfaz de usuario.
Piense en cómo protegería la misma información si se mostrara en una interfaz de usuario normal. Tendría que identificar quién era el usuario y luego exponer solo la información que este usuario tenía derecho a ver.
La información en los archivos de registro debe tratarse de la misma manera. Primero debe responder exactamente a quién se le debe permitir ver el archivo de registro y qué información se les debe permitir ver.
Pasar archivos de registro mal diseñados es un gran riesgo de seguridad. No creo que obtenga una buena solución para eso mediante la inclusión en una lista negra de algún tipo de datos. Una mejor estrategia es incluir en la lista blanca lo que podría ir en cada archivo de registro y diseñar los archivos de registro desde abajo.
fuente
La información de la tarjeta de crédito nunca debe registrarse.
Números de identificación (como SSN en los EE. UU. O Teudat Zehut # en Israel).
Nombres de computadora de red, rutas compartidas de red.
fuente
Información de salud de identificación personal cubierta por la Ley de Responsabilidad y Portabilidad del Seguro de Salud de 1996 (HIPAA). Este artículo enumera los siguientes ejemplos:
fuente
Si la seguridad es una preocupación, encripte el archivo de registro
fuente
La parte superior de mi cabeza....
La información de la tarjeta de crédito no debe estar en los registros. Los datos del SSN (o SIN) no deben estar en registros.
... por supuesto, hay excepciones, si por casualidad trabajas para algún almacén de datos central para una compañía de tarjetas de crédito o una agencia gubernamental que administra los datos del SIN, entonces es posible que tengas que registrarlos, porque es la carne principal de lo que Estamos procesando / gestionando.
fuente
Si pero.
Para depurar algunos problemas necesita datos reales.
Por lo tanto, debe jugar un juego de equilibrio: de hecho, debe discutir y acordar con sus principales clientes qué consideran datos confidenciales o confidenciales y qué no. Si varios clientes no están de acuerdo, tome el peor de los casos para cada aspecto del mismo, a menos que pueda justificarlo ante aquellos clientes que podrían exagerar al etiquetar todo lo sensible.
He trabajado en control de tráfico aéreo, finanzas y banca. En cada situación hay datos confidenciales. Hay tareas para las cuales es inevitable manejar datos confidenciales, en esos casos debe asegurarse lo más posible de que trabaje con personas confiables. Este riesgo puede mitigarse de alguna manera mediante cláusulas legales que se acuerden antes de acceder a dichos datos (acuerdos de no divulgación, uso de datos solo por razones comerciales válidas, acceso limitado a los datos, sanciones de enjuiciamiento por no respetar o hacer cumplir los acuerdos ...) - y procesos relevantes que hacen posible rastrear esas cosas.
Si los datos son críticos, entonces debe pagar el precio al configurar sistemas que protejan la integridad, coherencia y seguridad de estos datos.
Dicho esto, tiene razón al hacer la pregunta "qué datos". Realmente lo respondes tú mismo: la mayor parte está relacionada con los negocios. Por lo tanto, pregunte a sus clientes si no puede responderse a sí mismo, teniendo en cuenta todo lo anterior y conservando alguna forma de identificar y solucionar los problemas que puedan surgir.
fuente
Yo diría que registre mensajes que parecen divertidos mientras codifica. No los encontrarás divertidos en el futuro y estarán allí para siempre, ¡como esa publicación mal aconsejada de blog / facebook / twiter!
Mantenga los mensajes de registro aburridos :)
fuente