c# - 是否可以在 ASP.net 应用程序中嵌入试用限制?

标签 c# asp.net .net web-applications

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

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

与我们客户的付款条件是,首先是源代码,然后是付款。所以我在想一些介于两者之间的方式,让双方的信仰保持原样。我该怎么做?

最佳答案

发布您的 Web 应用程序,以便所有文件背后的代码都被编译到一个 dll 中。这样他们就无法轻易看到您的代码。但是,他们将能够使用反射来使用 jetBrains dotPeeek 等工具查看代码。

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

第一个选项

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

您在 web.config 中为客户端提供哈希码,并根据您的站点对其进行验证。 哈希由以下部分组成:

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

对Web服务的请求和响应进行加密并通过ssl发送。

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

Google map 要求您注册并获取哈希码,因为如果您滥用它,他们可以终止您对 google maps api 的使用。

第二个选项

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

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

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

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

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

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

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

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

选项 2 和 3 将允许客户在确实需要的情况下对哈希码进行逆向工程。

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

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

关于c# - 是否可以在 ASP.net 应用程序中嵌入试用限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16067667/

相关文章:

c# - 使用 `ElementName` 的 WPF 绑定(bind)失败,但在 Path 属性中指定 ElementName 有效吗?

c# - Asp.NET Web应用程序: run a method every x hours (long term)

asp.net - HttpContext.Current.Server 空

.net - 在VS中快速创建依赖项属性

.net - DateTime.Now.ToString ("yyyy-MM-dd hh:mm:ss")返回的是上午时间而不是下午时间?

c# - 如何在C#中从gridview页脚中的控件获取值?

javascript - 无法从asp.net中的java脚本隐藏标签和gridview

javascript - 根据复选框字段作用于 GridView 中的行

c# - 防止TcpClient的NetworkStream ReadTimeout关闭套接字

c# - 如何在不将其写入 C# 中的字符串文字的情况下引用标识符?