【问题标题】:Is it secure to use a DLL for the main logic of your .NET application?将 DLL 用于 .NET 应用程序的主要逻辑是否安全?
【发布时间】:2009-09-21 03:05:34
【问题描述】:

如果用户对 .net 中的编码几乎一无所知,并且他们看到了一个 .dll,那么他们就有能力调用您的公共函数和子例程。我知道你可以尝试一个“密钥”系统,它会检查某个“密钥”作为参数,并且只有在“密钥”有效时才运行代码,但我只是运行了一些代码和一个 .dll,我做了,当 .dll 抛出一个未处理的异常时,它向我显示了文件的内容。

如何保护您的 .dll?您是否应该只将代码放入您愿意冒险的代码中?

【问题讨论】:

  • 其他要记住的事情:如果 DLL 是在发布模式下构建的并且 PDB 文件是不存在。
  • @Mark Rushakoff:可以使用反射器对 .NET 程序集进行反编译...
  • @Mitch Wheat:同意,但是如果 DLL 是以上述方式构建的,那么当出现未处理的异常时,.NET 框架不应该提供太多细节。

标签: .net dll


【解决方案1】:

不要介意调用现有方法等。Reflector 将反编译代码!

混淆可以帮助您到目前为止,但要保护关键 IP,您需要将其托管在您控制的安全服务器上。

【讨论】:

    【解决方案2】:

    请注意,在反编译或在其他应用程序中重用的能力方面,.NET DLL 和 EXE 文件没有区别。

    您的问题暗示将所有代码放在可执行文件中更安全,这是一个很大的误解。

    两者都是程序集,因此在可执行文件中实例化和使用公共可见类型同样简单,就像使用 DLL 程序集一样。 (例如,在 Visual Studio 中转到:添加引用、浏览,然后注意“exe”是要引用的有效组件。)

    所以这个问题确实更笼统:向您的客户部署任何类型的 .NET 程序集是否安全?正如另一个答案所说,唯一保证安全的方法是根本不部署,而是将程序集保留在您自己的服务器上(例如开发 Web 应用程序)。

    混淆不会阻止某人访问您的代码,只会让他们更难(一段时间)理解它。

    【讨论】:

      【解决方案3】:

      我将回避您提出的实际问题,以便更快地为您指明需要前进的方向。

      您需要研究 .Net 代码混淆。这是其他人提出的基本相同的问题,但措辞不同的一篇好帖子:

      .NET obfuscation tools/strategy

      编辑 - 添加

      这是一篇关于您所问问题的好文章。

      http://aspnet.4guysfromrolla.com/demos/printPage.aspx?path=/articles/080404-1.aspx

      @Mitch Wheat 是对的。混淆只会让你到目前为止。但这是一个开始。如果您要重新分发您的 dll,您需要习惯这样的想法,即有人足够坚持不懈地破解它们。

      【讨论】:

      • 这也会混淆函数和子程序吗?
      • 我将不得不建议您阅读第二个链接上的文章,而不是回答这个问题。这篇文章比我在几篇文章或这里的答案中更清楚地涵盖了这个主题,听起来你需要看看这个主题的基础知识。 (无意冒犯)。
      【解决方案4】:

      一个小问题

      您的应用程序是 Web 应用程序还是 C#(Windows 窗体/命令提示符)应用程序。

      如果它是一个 Web 应用程序,您可以将您想要隐藏的逻辑放在托管在某个公共无法访问的其他 URL 上的 Web 服务中。

      此外,如果它是 Windows 应用程序,您仍然可以对 dll 进行混淆处理。但请记住,您可以使黑客难以反编译,但并非不可能。我在下面的链接中也有类似的问题。

      How to preventing decompilation of any C# application

      您必须权衡反编译的好处与隐藏/保留代码原样的业务回报。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2011-04-24
        • 2014-07-28
        • 1970-01-01
        • 1970-01-01
        • 2017-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多