ASP.NETdebugging模式有安全风险吗?

即使在ASP.NET安全性的初学者教程中,closuresASP.NET中的debugging模式也是提到的事情之一。 不幸的是,在网站项目中,debugging模式是获取具有exception堆栈跟踪的行号的唯一方法:不能仅在启用PDB的同时使网站处于发布模式。

堆栈跟踪中的行号对于发现那些只在生产中出现的蓝月亮例外的原因非常有用。

我们的服务器使用自定义error handling程序,并禁用了跟踪。 除此之外,还有其他的debugging模式会对安全有害吗?

发布PDB可以轻松地对您的程序的源代码进行逆向工程。 我可以想象,为了您的设置,您将有编译的代码在您拥有和保护的服务器上运行。 另外,堆栈跟踪信息将受到数据库服务器安全性的保护。

安全问题来自哈希密码的类似推理。 如果攻击者可以进入你的数据库或服务器,那么他们就可以更轻松地窃取你的源代码中的敏感信息。

这都是你风险偏好的问题。 如果这只是一些没有敏感代码的主页,那么您可能希望接受信息溢出和代码盗窃的风险,以代替更快的debugging/开发时间。 但是,如果情况正好相反,我build议坚持在生产环境中发布构build版本,并在生产networking之外使用debugging服务器来追踪问题。

而且,使用诸如nlog之类的日志logging系统也可能是一个很好的解决scheme,可以在不必释放PDB的情况下检测问题。 你需要编写足够的日志代码来覆盖所有的基础,但是如果释放PDB风险太大,那么这样的努力是值得的。