部署应用程序的调试版本有何影响?

问题描述 投票:0回答:2

我想知道决定部署在调试(带有调试符号表)中构建的应用程序和与删除符号的发布模式相反的应用程序的利弊。还有其他排列,例如打开调试优化和打开发布调试符号。

我认为可能关注的领域是(你可能认识其他人):

  • 安全
  • 性能
  • 稳定性

但我不是专家,所以我不确定部署调试应用程序会对这些领域产生的所有影响。

它可能不相关,但对于相关人员来说,此应用程序是 C# .Net Framework 3.5(管理 TB 数据的业务应用程序)。这是针对(付费)客户的应用程序。

选择这样做有什么明显的优点或缺点吗?

c# security debugging deployment
2个回答
5
投票

安全性:调试和发布托管代码(如 C#)如果不进行混淆,就已经很容易受到攻击。通过混淆来保护您的代码,否则它很容易被复制、窃取,任何安全措施(例如加密)都会被破解(您在本例中提到了客户的太字节数据)。我在这里回答了一个混淆问题。另外,创建一个密钥文件并签署您的程序集。

性能:调试速度肯定较慢,永远不应该发布调试版本。如果使用 AJAX 会使每个页面请求更重,因为调试版本更大。将应用程序配置文件的调试标志设置为 false,我在这个其他问题中包含了一些类似的提醒。

稳定性:调试使用更多内存,如果服务器内存不足,稳定性可能会较差。拥有调试 dll 的一个优点是,如果应用程序失败,您的 pdb 文件已经就位。最佳实践是将调试版本保存在您构建的每个发布版本的安全位置。如果客户要求您调试,请备份他的文件夹并将其替换为您相应的调试程序集。

我开发了一个归档产品,该产品也归档了太字节的数据,我不建议部署调试版本并确保它被混淆,并且文件加密方法使用Dotfuscator加密。


2
投票

您还可以为他们提供带有调试信息的发布版本。

© www.soinside.com 2019 - 2024. All rights reserved.