J'ai une application qui enregistre des traces de pile d'exception et je voulais que ces traces de pile incluent les noms de fichier et les numéros de ligne lorsqu'elles sont déployées en production. J'ai trouvé comment déployer les symboles de débogage avec l'assemblage, mais au cours de mes recherches, j'ai rencontré les problèmes suivants cette question ce qui implique que ce n'est pas une bonne idée d'inclure des fichiers pdb dans un environnement de production. Un commentaire à la réponse acceptée dit "...les informations de débogage peuvent donner des données sensibles et être un vecteur d'attaque. Cela dépend de la nature de votre application."
Quel type de données sensibles pourrait être exposé ? Comment les symboles de débogage peuvent-ils être utilisés pour compromettre une application ? Je suis curieux de connaître les détails techniques, mais ce que je recherche vraiment, c'est un moyen pratique d'évaluer le risque d'inclure des symboles de débogage pour une application et un environnement de production donnés. Ou, pour le dire autrement : quel est le pire qui puisse arriver ?
EDIT : question de suivi/clarification
D'après les réponses données jusqu'à présent, il semble que cette question puisse être simplifiée pour les applications .NET. Ce passage de la Le blog de John Robbins lié à La réponse de Michael Maddox m'a en quelque sorte sauté aux yeux :
Une PDB .NET ne contient que deux éléments d'information. informations, les noms des fichiers sources et leurs lignes et les noms des variables locales locales. Toutes les autres informations sont déjà dans les métadonnées .NET. Il n'est donc pas nécessaire de dupliquer les mêmes informations dans un fichier PDB.
Pour moi, cela réitère ce que d'autres ont dit à propos de Reflector, avec l'implication que le vrai problème est l'accès aux assemblages. Une fois que cela a été déterminé, la seule décision à prendre en ce qui concerne les PDBs est de savoir si vous vous souciez ou non d'exposer les noms de fichiers, les numéros de lignes et les noms de variables locales (en supposant que vous ne montriez pas les traces de pile aux utilisateurs finaux pour commencer). Ou ai-je trop simplifié les choses ?
0 votes
@Matt : S'agit-il d'une application de bureau, web, compacte ou... ?
0 votes
@Kb - dans ce cas particulier, il s'agit d'une application console que nous exécutons avec un planificateur. Il a été développé en interne pour un usage interne, donc toute personne qui peut voir le fichier pdb serait également en mesure de voir le code source, donc je ne suis pas trop inquiet pour cette application particulière. Je suis plus intéressé par le cas général/pratique afin de pouvoir décider si oui ou non il faut prendre le risque avec d'autres applications, comme par exemple une application de bureau installée sur des ordinateurs portables qui sont occasionnellement connectés à des données sensibles sur notre réseau.