关闭ASP.NET中的调试模式是即使在最安全的ASP.NET安全性教程中也提到的事情之一.不幸的是,在网站项目中,调试模式是获取具有异常堆栈跟踪的行号的唯一方法:您不能仅在启用发布模式时启用PDB.
堆栈跟踪中的行号在确定仅在生产中出现的那些蓝色月亮异常的原因时特别有用.
解决方法
释放PDB使您能够轻松地对程序的源代码进行反向工程.我想,对于你的设置,你可以在你拥有和保护的服务器上运行已编译的代码.此外,堆栈跟踪信息将受到数据库服务器安全性的保护.
安全问题来自哈希密码的类似推理.如果攻击者可以进入您的数据库或服务器,那么他们可以更轻松地窃取源代码中的敏感信息.
这完全取决于您的风险偏好.如果这只是一些没有敏感代码的主页,那么您可能希望接受信息溢出和代码被盗的风险,而不是更快的调试/开发时间.但是,如果相反,我建议坚持在生产中发布版本并使用生产网络之外的调试服务器来跟踪问题.
此外,使用诸如nlog之类的日志记录系统也可以是检测问题而不必释放PDB的良好解决方案.您需要编写足够的日志记录代码来覆盖所有基础,但如果释放PDB的风险太大,那么努力是值得的.