【问题标题】:How to obfuscate web app before publishing?如何在发布之前混淆 Web 应用程序?
【发布时间】:2011-01-25 21:24:14
【问题描述】:

我有一个包含多个 DLL 的 Visual Studio 2008 解决方案,并且 Web 应用程序将它们用作主项目。这是一个商业银行和会计软件(瘦客户端),我不希望客户通过绕过我的方式访问源代码。

我想在通过菜单 Publish 将所有生成的程序集发布到 Web 服务器之前对其进行模糊处理。

我该怎么做?如何在构建和发布之前插入混淆步骤?使用 msbuild?

编辑:感谢大家的回答!但我的问题更多是关于具体任务(在 VS 中对发布进行混淆),而不是关于一般的混淆。

【问题讨论】:

  • 如果我错了,请纠正我,但你混淆了生成的程序集而不是源代码..
  • @Petoj:是的,当然,谢谢。我合格了我的职位。但实际上有一个术语:混淆代码en.wikipedia.org/wiki/Obfuscated_code
  • 您不会想等到最后一分钟再进行混淆(如果您决定这样做的话)……您需要在周期的早期开始混淆和测试结果。我一直认为我可以在代码完成后完成它的过程......但它通常会破坏某些东西 - 现在我建议对其进行设计以获得最大效果。

标签: .net asp.net msbuild obfuscation publishing


【解决方案1】:

预计从哪里劫持?来自用户还是来自主机?首先,您不应将源代码放在站点上,而应仅将程序集编译好,其次,您应该将程序集放在用户无法访问的文件夹中。如果你害怕主机,你应该使用混淆器,只需谷歌它们,市场上有很多。

【讨论】:

  • @Andrey:因为我使用的是 C#,所以即使编译的程序集也很容易被阅读。所以我想以模糊的形式将它们提供给客户(在他的服务器上发布)。
【解决方案2】:

切勿向您不信任他们的客户发送任何内容。曾经。如果您使用的语言需要将受信任的信息发送给不受信任的客户,那就太愚蠢了。

【讨论】:

    【解决方案3】:

    看到这个帖子:Protect .NET code from reverse engineering?

    实际上,您无法完全保护您的代码免受逆向工程的影响。最好的办法是使用 Dotfuscator 之类的工具。

    如果您的代码有效,那么诚实的客户尝试重写或篡改它的可能性很小。如果客户不诚实,那么您几乎无能为力。

    与其担心这一点,不如担心生产出诚实的客户会买单的优质产品。

    【讨论】:

      【解决方案4】:

      市面上有几种混淆产品。

      Visual Studio 甚至附带了一个 - DotFuscator,尽管有 others

      这里有一些 DotFuscator documentation

      但是,即使进行了混淆,一个坚定的黑客也能够对您的代码进行逆向工程。

      【讨论】:

      • +1 - 我要补充一点,它不仅不会阻止坚定的黑客,它只会稍微减慢他们的速度。在实际修复第三方错误之前,我必须查看事情是如何工作的,一旦你习惯了查看它,混淆代码的爬行速度并不比具有非常糟糕的变量/函数名称的普通代码慢得多。
      【解决方案5】:

      我同意上述观点,即您不应将代码发布给不受信任的一方。混淆只会使您的代码难以被理解,但有一些方法和手段可以解决它。

      话虽如此,如果你真的想混淆你的代码,你可以试试Easfuscator.NET

      【讨论】:

        【解决方案6】:

        一些混淆器将支持在构建过程中执行混淆,这样发布的应用就已经被混淆了。

        Crypto Obfuscator 就是这样一种工具 - 它支持与 MSBuild 的集成,从而可以在发布或 ClickOnce 中执行混淆步骤。

        【讨论】:

          猜你喜欢
          • 2015-07-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多