2014-02-19 51 views
6

我正在ASP.NET網站上工作,我想部署pdb文件,因爲當發生意外的異常時,我想將它們記錄在的行號中,以便我可以找出問題所在。是否有任何理由不將pdb文件部署到生產Web服務器?

但我擔心安全性能

如果我使用堆棧跟蹤信息登錄到Web服務器上的非公用文件並且不向用戶顯示,那麼在Web服務器上安裝pdb文件是否存在安全風險?

就性能而言,我知道在有pdb文件時處理異常代價更高,但目標不是有任何異常,並且在極少發生異常情況時要獲得良好的跟蹤數據我們可以解決這個問題。

但是我不清楚的一件事是:如果拋出異常並被捕獲,我還支付pdb的處罰嗎?我特別想到當你Response.Redirect時拋出的ThreadAbortException。這是一個傳統的應用程序,其中包括很多這些作爲正常程序流程的一部分,所以我只是捕捉並忽略這些異常,但是pdb文件的存在會使這種成本更高嗎?或者.NET會忽略pdb文件,除非你詢問堆棧跟蹤(對於這個特殊的例外情況,我不這麼做)?

除此之外,只要除了我真的想詳細瞭解的那些外,沒有任何例外,是否會將部署pdb文件的性能影響到Web服務器?

回答

4

至於安全性,我看不到任何部署PDB的實際問題。該PDB只包含

  • 源代碼行和IL之間的映射抵消當地人源文件的
  • 名稱的
  • 名稱
  • using指令
  • 列表有關特定功能

即使PDB信息被泄露我不會考慮任何敏感信息

至於性能,PDB的存在不會改變您的應用程序的執行邏輯。它只與調試有關,並且正常執行不會與其進行交互

+0

感謝您的快速響應。你可以專門針對ThreadAbortException場景發表評論嗎?如果應用重定向並拋出其中一個,並且我忽略並忽略它,那麼是否支付pdb查找罰款? –

+0

@JoshuaFrank我還不清楚爲什麼你認爲異常會引用PDB。他們可能會做得很好,但據我所知,他們不會 – JaredPar

+0

我想我不清楚什麼時候,確切地說,pdb文件是用來查找符號。是在拋出異常時,還是在異常處理程序代碼要求堆棧跟蹤數據時?我特別要求這是因爲對另一個SO問題的評論,在問題的上下文中,這聽起來像是當異常被**拋出時支付查找代價**:http://stackoverflow.com/questions/381537 /部署-pdb-files-in-iis-any-benefit#comment16486391_382087 –

0

您希望部署PDB文件,您希望獲得額外的調試優勢,例如在拋出異常時用於堆棧跟蹤目的的附加信息行號等,例如以及remote debugging的應用程序。需要注意的是,使用.pdb調試時異常處理的執行速度往往較慢。

1

我同意JaredPar,儘管您可能會認爲他列出的大部分內容使得如果服務器遭到黑客攻擊,反編譯和逆向工程您的站點將更加容易。另一方面,在沒有PDB的情況下對其進行逆向工程也相對容易(儘管需要更多的工作),所以這只是一個小的安全風險。另外,取決於您的網站的範圍,逆向工程可能不是一個問題。

相關問題