【问题标题】:Hiding code in ASP.NET application在 ASP.NET 应用程序中隐藏代码
【发布时间】:2011-09-23 08:32:39
【问题描述】:

我有一个 ASP.NET 应用程序,我通过将项目复制到服务器然后配置 IIS 将其部署到服务器。 现在发生的事情是我需要阻止对代码的访问。有没有办法做到这一点? 我需要以不同的方式部署还是有办法以某种方式“加密”代码从而使其不可读?

问候,

【问题讨论】:

  • “阻止对代码的访问”——来自谁?
  • 您的意思是您不想显示 .cs 文件,或者您想真正加密 dll(程序集),这样即使高级用户也无法反编译和理解?
  • DLL 的逆向工程没有问题,因为不会有高级用户可以访问服务器。当我说“阻止访问”时,我的意思是代码不存在或不可读。

标签: asp.net iis deployment


【解决方案1】:

是的,您应该只发布。

在 Visual Studio 中,在解决方案资源管理器中,右键单击 Web 项目并选择发布。

这将创建您需要部署的所有内容(页面、程序集、资源...),但不包括源代码。

【讨论】:

  • 我做了发布选项,但它包含了我所有的代码文件(.aspx 和 .vb)。我做错了吗?
  • 是的,因为它不应包含代码文件,仅包含 aspx 和 dll 和图像。尝试使用发布选项。
【解决方案2】:

一种简单的方法是混淆代码。这并没有隐藏代码本身,但它使阅读和理解变得非常困难。

更多信息请参见this wiki page

另一方面,如果您使用发布配置发布应用程序,您将只上传程序集和对站点至关重要的其他部分,而不是可读形式的源代码。不过要小心,dll 可以被逆向工程。

【讨论】:

    【解决方案3】:

    您可以在您的程序集上使用诸如dotFuscator 之类的混淆器。

    更好的混淆器将难倒大多数反编译器(例如 Reflector),但通常不是免费的。


    更新:

    您的意思是您根本不希望代码与您的应用程序一起部署:

    发布就足够了,只要您不使用app_code 文件夹 - 此文件夹中的代码将按原样部署。

    【讨论】:

    • @DavidePiras - 如果有人可以访问 DLL,那么他们可以使用 Reflector 来获得原始代码的(近似)。
    • 我知道,但我认为这不是 OP 的意思。反正其实还不清楚,加了一个问题作为对原问题的评论...
    • @DavidePiras - 谁知道他的意思。也许他不希望系统管理员能够看到原始代码?也许他在共享托管环境中? OP 没有回复我的评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多