有没有理由不将pdb文件部署到生产Web服务器?

时间:2014-02-19 17:25:30

标签: asp.net .net debugging

我正在ASP.NET网站上工作,并且我想部署pdb文件,因为在抛出意外异常时,我想用行号记录 所以我可以追查问题。

但我关注安全性性能

如果我使用堆栈跟踪信息登录到Web服务器上的非公共文件并且不向用户显示pdb文件,那么在Web服务器上安装pdb文件是否存在安全风险?

就性能而言,我知道在有pdb文件的情况下处理异常会更加昂贵,但目标不是有任何例外,并且在极少数情况下,当它们发生时,获得良好的跟踪数据,以便我们解决问题。

但有一件事我不清楚是这样的:如果抛出并抓住了异常,我是否仍然支付pdb罚款?我特别想到你Response.Redirect时引发的ThreadAbortException。这是一个遗留应用程序,其中很多都是正常程序流程的一部分,所以我只是捕获并忽略这些异常,但是pdb文件的存在会使这个代价更高吗?或者.NET会忽略pdb文件,除非你要求堆栈跟踪(对于这个特殊的例外,我不会这样做)?

除此之外,只要除了我真正想要详细了解的内容之外没有其他例外,将pdb文件部署到Web服务器是否有任何性能损失?

3 个答案:

答案 0 :(得分:5)

至于安全性,我看不到部署PDB的任何实际问题。 PDB只包含

  • 源线和IL偏移之间的映射
  • 当地人的姓名
  • 源文件的名称
  • 与给定功能相关的using指令列表

即使PDB信息被泄露,我也不会考虑任何敏感信息

至于性能,仅仅存在PDB不会改变应用程序的执行逻辑。它仅与调试目的相关,而正常执行不与它交互

答案 1 :(得分:1)

我同意JaredPar,尽管您可能会认为他列出的大部分内容使得如果服务器遭到黑客入侵,您可以更轻松地对您的网站进行反编译和反向工程。

另一方面,在没有PDB的情况下对其进行逆向工程也相对容易(尽管需要更多的工作),因此它只是一个小的安全风险。此外,根据您的网站范围,逆向工程甚至可能不是问题。

答案 2 :(得分:0)

您希望部署您希望获得额外调试优势的PDB文件,此类附加信息行号以及抛出异常时的堆栈跟踪目的,以及remote debugging应用程序。需要注意的是,在使用.pdb调试时,异常处理往往会执行得更慢。