那么可能会暴露哪些敏感数据?调试符号如何被用来危害应用程序?我对技术细节很感兴趣,但我真正想知道的是评估在任何给定应用程序和生产环境中包含调试符号的风险的实际方法。或者换句话说:最坏的情况会是什么?
编辑:后续问题/澄清
根据大家迄今为止的回答,似乎可以将这个问题在.NET应用程序中简化一些。链接到John Robbins博客和Michael Maddox的答案的这段内容引起了我的注意:
.NET PDB仅包含两个部分的信息:源文件名及其行数、局部变量名。所有其他信息已经存在于.NET元数据中,因此不需要在PDB文件中重复存储相同的信息。
对我来说,这再次强调了其他人关于Reflector的说法,暗示真正的问题是访问程序集。一旦确定了这一点,关于PDB文件唯一需要决定的事情就是是否关心暴露文件名、行号和局部变量名(假设您一开始并不向最终用户显示堆栈跟踪)。或者我是否过于简化了这个问题?