5

我有一个 ASP .NET 应用程序,我们提供给我们的客户,让他们将其部署在他们的 Web 服务器中并使用它。我担心的是我所有的 ASPX 页面源代码都是开放的,我们的客户可以打开 ASPX/CS 文件并查看其中的代码。

我想通过实施一些 15-20 天的试用限制来保护我的代码,例如 Windows 应用程序。另一方面,源代码必须有一些第三方 dll,这样每当他们尝试部署新版本时,它只能在有限的时间内使用。

我们客户的付款条件是,先源代码,然后付款。所以我在想,双方的信仰都保持原样。我怎样才能做到这一点?

4

3 回答 3

2

发布您的 Web 应用程序,以便将文件背后的所有代码编译成 dll。这样他们就不能轻易看到您的代码。然而,他们将能够使用反射来查看使用 jetBrains dotPeeek 等工具的代码。

最佳选择 自己托管网站,但由于这不能回答您的问题,这里有一些其他选择

第一个选项

如果客户坚持托管站点,因为他们一致同意拥有数据,那么允许他们托管站点和数据库,但从您控制的集中托管站点中提取功能。你甚至可以提供一个 api。

您在 web.config 中为客户端提供哈希码,这将针对您的站点进行验证。哈希由以下组成:

  • 盐前
  • 网络服务地址
  • 到期日
  • 客户唯一标识符
  • 您想要的任何其他信息
  • 盐后

加密 web 服务的请求和响应并通过 ssl 发送。

客户端哈希将在请求中发送。使用相同的字段构建一个新的哈希,并根据您从客户端收到的哈希进行验证。如果它无效,则您不提供该功能。

谷歌地图要求您注册并获得一个哈希码,因为如果您滥用它,他们可以终止您对谷歌地图 API 的使用。

第二个选项

另一种选择是设置对您托管的站点的 Web 服务调用。

然后,已部署的已编译 Web 应用程序将使用来自您的 Web 服务的响应构建一个哈希,并将生成的哈希与您在响应中发送的哈希匹配。

这意味着如果客户端阻止到您的 Web 服务的流量或试图伪造响应,那么应用程序将停止工作。

如果他们试图伪造响应,还可以添加一些逻辑来提醒您。如果他们阻止对您的 Web 服务的调用,这显然不会起作用。

您不会在此处包含盐,因为如果他们反编译了您的代码,客户可以阅读它们。

第三个选项 将两个字段添加到您的 web.config:

  • 您为客户端生成的哈希码
  • 一个到期日。

如果客户更改到期日期以允许他们有更多时间,那么它将无法验证并且他们将被锁定。

选项 2 和 3 将允许客户在他们真正想要的情况下对哈希码进行逆向工程。

======================================

我真的不认为有必要,但如果你愿意,你可以使用其他帖子中提到的一些混淆工具,让客户更难阅读你的代码。但是即使他们可以阅读您的代码,他们也不应该能够自己创建有效的哈希码。

于 2013-04-18T16:06:17.547 回答
1

我建议您查看 .NET Reactor 和 Intellilock。.NET Reactor 将防止编译代码的反编译,但是对于 aspx,我不确定这将如何工作,因为它需要进行预编译。Intellilock 将提供设置过期时间的功能。我已经将两者都与标准可执行文件一起使用,但从未使用过 ASPX,所以我不确定它们是否会有所帮助。

链接:http ://www.eziriz.com/

于 2013-04-18T15:53:41.040 回答
0

DotFuscator 社区版是一种可能,但它可能对您的需求来说太基本了。

我建议你看看市场上的商业混淆器。这是我通过简单的 Google 搜索找到的一些列表。(这不是任何这些工具的推荐。)

于 2013-04-18T15:48:10.723 回答