发布您的 Web 应用程序,以便将文件背后的所有代码编译成 dll。这样他们就不能轻易看到您的代码。然而,他们将能够使用反射来查看使用 jetBrains dotPeeek 等工具的代码。
最佳选择
自己托管网站,但由于这不能回答您的问题,这里有一些其他选择
第一个选项
如果客户坚持托管站点,因为他们一致同意拥有数据,那么允许他们托管站点和数据库,但从您控制的集中托管站点中提取功能。你甚至可以提供一个 api。
您在 web.config 中为客户端提供哈希码,这将针对您的站点进行验证。哈希由以下组成:
- 盐前
- 网络服务地址
- 到期日
- 客户唯一标识符
- 您想要的任何其他信息
- 盐后
加密 web 服务的请求和响应并通过 ssl 发送。
客户端哈希将在请求中发送。使用相同的字段构建一个新的哈希,并根据您从客户端收到的哈希进行验证。如果它无效,则您不提供该功能。
谷歌地图要求您注册并获得一个哈希码,因为如果您滥用它,他们可以终止您对谷歌地图 API 的使用。
第二个选项
另一种选择是设置对您托管的站点的 Web 服务调用。
然后,已部署的已编译 Web 应用程序将使用来自您的 Web 服务的响应构建一个哈希,并将生成的哈希与您在响应中发送的哈希匹配。
这意味着如果客户端阻止到您的 Web 服务的流量或试图伪造响应,那么应用程序将停止工作。
如果他们试图伪造响应,还可以添加一些逻辑来提醒您。如果他们阻止对您的 Web 服务的调用,这显然不会起作用。
您不会在此处包含盐,因为如果他们反编译了您的代码,客户可以阅读它们。
第三个选项
将两个字段添加到您的 web.config:
如果客户更改到期日期以允许他们有更多时间,那么它将无法验证并且他们将被锁定。
选项 2 和 3 将允许客户在他们真正想要的情况下对哈希码进行逆向工程。
======================================
我真的不认为有必要,但如果你愿意,你可以使用其他帖子中提到的一些混淆工具,让客户更难阅读你的代码。但是即使他们可以阅读您的代码,他们也不应该能够自己创建有效的哈希码。