ASP.NET 调试模式是否存在安全风险?

ASP.NET 调试模式是否存在安全风险?

关闭 ASP.NET 中的调试模式是 ASP.NET 安全性入门教程中提到的内容之一。不幸的是,在网站项目中,调试模式是获取异常堆栈跟踪行号的唯一方法:您不能在网站处于发布模式时启用 PDB。

堆栈跟踪中的行号对于找出仅在生产中发生的那些千载难逢的异常的原因非常有用。

我们的服务器使用自定义错误处理程序,并且已禁用跟踪。调试模式是否还有其他方式会危害安全?

答案1

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

安全问题与散列密码的原理类似。如果攻击者可以进入你的数据库或服务器,那么他们就更容易窃取源代码中的敏感信息。

这完全取决于您的风险偏好。如果这只是一些没有敏感代码的主页,那么您可能希望接受信息泄露和代码盗窃的风险,而不是更快的调试/开发时间。但是,如果情况相反,我建议坚持在生产中使用发布版本,并使用生产网络之外的调试服务器来追踪问题。

此外,使用 nlog 等日志系统也可能是检测问题而不发布 PDB 的好方法。您需要编写足够的日志代码来涵盖所有基础,但如果发布 PDB 风险太大,那么这种努力是值得的。

相关内容