¿Cómo elimino o anonimo los nombres de archivos y las rutas que están almacenados en la salida compilada de .NET?

5

Cuando se produce una excepción en una aplicación .NET, el resultado de la excepción también incluye la ruta y el nombre del archivo de código que residía en la máquina del desarrollador. Esto comparte cierta información que es útil para la depuración, pero también puede presentar un problema de seguridad como se muestra en el siguiente ejemplo:

Enlaimagenanterior,eldirectorioD:\talkprovienedelamáquinadeldesarrolladorynodelusuariofinal.

SupongamosquetengounarchivodeVisualStudioSolutionquetieneunarchivoPFXconlapartedelacontraseñadelnombre:

Example:d:\mysecretproject\ObscureFOSSproject\Signer-PW-Is-test123.pfx

Porsupuesto,test123noeslacontraseñarealdepfx,perosiesunacontraseñamássensiblequeseusóparaotrospropósitos(porejemplo,administradordedominio).

Pregunta:

¿Dóndeestáestacadena"Signer-PW-Is-test123.pfx" almacenada en la .NET DLL o en el exe?

¿Está almacenado en el archivo OBJ?

¿Cómo puedo eliminar estos datos o anonimizar la información para no filtrar lo que no es necesario, pero aún así es posible que los ingenieros depuren la aplicación?

    
pregunta random65537 22.06.2012 - 16:43
fuente

2 respuestas

2

Estoy un poco confundido en cuanto a cómo tienes esta configuración.

¿Qué te hace pensar que la ruta del archivo se almacena en cualquiera de los ensamblajes? ¿Está utilizando ese PFX para firmar los ensamblajes? Si es así, hay un puntero en los atributos del ensamblaje.

No hay forma de ocultar el nombre de archivo en ese nivel porque el compilador necesita conocer la ruta completa. Posiblemente podría ejecutarlo a través de un software de ofuscación, pero aún así es probable que la cadena esté presente.

Otra opción es asegurarse de compilar en RELEASE para que no se agreguen los bits de depuración. Esto eliminará los archivos pdb y eliminará la mayoría de las entradas para codificar las rutas de los archivos.

La única otra opción es compilar el objeto desde una ruta no sensible, por ejemplo, d: \ builds \ 1, y eliminar toda la información confidencial de las rutas del archivo. En pocas palabras: no almacene la contraseña en el nombre de archivo.

    
respondido por el Steve 22.06.2012 - 19:58
fuente
-1

Necesitas implementar el manejo de excepciones. Para todas las llamadas al sistema y a la API, consulte la documentación para obtener una lista de las excepciones que el método puede lanzar. Entonces, explique adecuadamente esas excepciones y no tendrá problemas como estos.

    
respondido por el Fairlight 23.06.2012 - 02:09
fuente

Lea otras preguntas en las etiquetas