在ASP.NET中关闭调试模式是甚至在关于ASP.NET安全性的最初级教程中提到的事情之一。不幸的是,在网站项目中,调试模式是获得带有异常堆栈的行号的唯一方法:您不能只启用PDBs而让网站处于发布模式。
堆栈中的行号对于找出只发生在生产中的“蓝月一遇”异常的原因是非常有用的。
我们的服务器使用自定义错误处理程序,并且禁用了跟踪。在调试模式可能会对安全性有害的方面,还有其他方法吗?
发布于 2014-08-29 00:54:46
发布PDB可以轻松地反向工程程序的源代码。我可以想象,在您的设置中,您将在您拥有和保护的服务器上运行编译后的代码。此外,堆栈跟踪信息将受到数据库服务器安全性的保护。
安全问题来自于哈希密码的类似推理。如果攻击者能够进入您的数据库或服务器,那么他们在源代码中窃取敏感信息就更容易了。
这都是你冒险的问题。如果这只是一些没有敏感代码的主页,那么您可能希望接受信息泄漏和代码盗用的风险,而不是更快的调试/开发时间。但是,如果相反,我建议坚持在生产中发布版本,并使用生产网络之外的调试服务器来跟踪问题。
此外,使用日志记录系统(如nlog )也可能是一个很好的解决方案,可以在不需要释放PDB的情况下检测问题。您需要编写足够的日志代码来覆盖所有的基础,但是如果发布PDB太危险,那么这种努力是值得的。
https://serverfault.com/questions/610897
复制相似问题