Je travaille sur un site Web ASP.NET et je voudrais déployer les fichiers PDB car lorsque des exceptions inattendues sont lancées, je veux les enregistrer Mais je suis préoccupé par la sécurité Sécurité forte> et Y a-t-il un risque de sécurité pour avoir des fichiers PDB sur un serveur Web, si j'utilise les informations de la trace de la pile pour vous connecter à un fichier non public sur le serveur Web et ne le montrez pas à l'utilisateur? P>
En ce qui concerne la performance, je sais qu'il est plus coûteux de traiter des exceptions lorsqu'il y a un fichier PDB, mais l'objectif n'est de ne pas avoir d'exceptions, et sur le cas rare quand ils se produisent, pour obtenir de bonnes données de traçage afin que nous peut résoudre le problème. p>
Mais une chose que je ne suis pas clair sur est la suivante: si une exception est lancée et attrapée, est-ce que je paie toujours la peine PDB? Je pense particulièrement à propos de la threadabortexception jeté lorsque vous Au-delà de cela, tant qu'il n'y a aucune exception excepte, à l'exception de ceux que je veux vraiment savoir en détail, existe-t-il des performances de déployer des fichiers PDB sur le serveur Web? P> Response.ReRirect code> . Ceci est une application héritée avec beaucoup de ceux-ci dans le flux de programme normal, et donc je viens d'attraper et d'ignorer ces exceptions, mais la présence d'un fichier PDB le rendra-t-elle beaucoup plus coûteuse? Ou est-ce que .NET ignore le fichier PDB, sauf si vous demandez la trace de la pile (que je ne fais pas, pour cette exception particulière)? P>
3 Réponses :
Quant à la sécurité, je ne peux voir aucun problème réel avec le déploiement d'une PDB. Le PDB contient simplement P>
en utilisant code> directives pertinentes à une fonction donnée li>
ul>
Même si les informations PDB ont été divulguées, je ne considérerais aucune de ces informations sensibles p>
Quant à la performance, la simple présence d'un PDB ne changera pas la logique d'exécution de votre application. Il n'est pertinent que pour le débogage et l'exécution normale n'interagissent pas avec elle p>
Merci pour la réponse rapide. Pouvez-vous commenter spécifiquement le scénario ThreadabortException? Si l'application redirige et jette un de ceux-ci, et je l'attrape et l'ignorais, est-ce que je paie la pénalité de recherche PDB?
@Joshuafrank Je ne suis toujours pas clair pourquoi vous pensez que les exceptions feront référence au PDB du tout. Ils peuvent très bien faire cela, mais à ma connaissance, ils ne le font pas
Je suppose que je ne suis pas clair lorsque, exactement, le fichier PDB est utilisé pour rechercher des symboles. Est-ce que l'exception est lancée ou lorsque votre code de gestionnaire d'exception demande des données de trace de pile? Je demandais spécifiquement à cause de ce commentaire sur une autre question, ce qui, dans le contexte de la question, il semble que vous payiez le coût de la recherche lorsque l'exception est lancée b>: Stackoverflow.com/questions/381537/... a>
@Joshuafrank Ceci semble ne se produire que lorsque la propriété StackTrace code> est invoquée. Toute la logique pour construire les noms de fichiers se produit ici Afaict
Ah, c'est exactement ce que j'espérais que ce serait, et il est logique de ne pas faire cette recherche coûteuse à moins que vous n'ayez réellement besoin des données. Merci pour votre aide!
Vous souhaitez déployer des fichiers PDB que vous désirez les avantages de débogage supplémentaires, de tels numéros de ligne d'informations supplémentaires et tels que des fins de traçage de pile lorsque des exceptions sont lancées, ainsi que comme Débogage à distance d'applications. La mise en garde est que la manipulation des exceptions a tendance à fonctionner plus lentement lorsque vous utilisez le débogage .PDB. p>
Je suis d'accord avec JaredPar, bien que vous envisagez de considérer que la plupart des choses qu'il a énumérées, rendez-la encore plus facile à décompiler et à ingénierier ingénieur de votre site si le serveur est piraté. p>
De l'autre côté, il serait également relativement facile (mais avec un peu plus de travail) pour inverser l'ingénieur sans les PDB, ce n'est donc qu'un risque de sécurité mineur. De plus, en fonction de la portée de votre site Web inverse ingénierie pourraient même pas être un problème. p>