我有一个记录异常strack跟踪的应用程序,我希望在生产中部署时,这些堆栈跟踪包括文件名和行号.我知道了如何部署带有程序集的调试符号,但在研究这个问题的过程中,我运行了accross this question,这意味着在生产环境中包含pdb文件不是一个好主意.一个 comments 的回答是:"调试信息可以提供敏感数据,并成为攻击向量.取决于应用程序是什么."
那么什么样的敏感数据可能会被曝光呢?如何使用调试符号危害应用程序?我对技术细节很好奇,但我真正想要的是一种实用的方法来判断为任何给定的应用程序和生产环境包含调试符号的风险.或者换一种说法:最坏的情况会是什么?
EDIT:后续问题/澄清
因此,根据目前为止每个人的答案,这个问题似乎可以简化一点.NET应用程序.Michael Maddox's answer中John Robbins blog个链接中的这一部分突然向我跳了出来:
一个.NET PDB仅包含两部分 信息、源文件名和 它们的线条和局部变量 名字.所有其他信息都是 已在.NET元数据中,因此存在 不需要复制相同的 PDB文件中的信息.
对我来说,这重申了其他人关于Reflector的说法,言下之意是真正的问题是对程序集的访问.一旦确定了这一点,关于PDB要做的唯一决定就是您是否关心公开文件名、行号和局部变量名(假设您一开始就没有向最终用户显示堆栈跟踪).或者我是不是过于简单化了?