-->

强制从本地托管的Web应用程序的许可证[关闭](Enforcing Licenses from Lo

2019-07-30 11:19发布

比方说,我们有将是两者的Web应用程序

  • 通过互联网连接提供托管解决方案
  • 能够从本地安装到用作“内联网”的应用

什么是强制许可为此Web应用程序的最佳方式,从根本上让您轻松开启客户端/关闭访问。 我在想的流动会是这样的:

客户端在本地安装--->与中央服务器授权 - >允许/拒绝访问

另外,我希望能够确保我们可以提供免费试用,基本上打开和关闭应用程序的某些功能。 我们还必须考虑如果我们“走出去企业”会发生什么。

Answer 1:

你有正确的想法,

使用中央服务器(这可能是您的托管解决方案),

如果您对您的托管(外部)解决方案构建许可检查,你可以只添加需要的许可证密钥,例如加密后的web请求

请求{}域

https://{domain}.{tdl}/licenceValid/internal

邮政查询字符串

licenceCrypt={licenceKey(though SHA1)}&companyId={company_id}

难道你的支票,然后返回一个字符串,JSON,一旦你有一个纯文本版本的工作,那么你可以介绍加密,因此你不发送纯文本虽然互联网

Succsess : {'status':'OK','expire':'20/07/2012 00:00:00', 'check':'18/07/2012 00:00:00'}
Fail     : {'status':'FAIL','Message':'Licence has expired'}

然后导致这个信息高速缓存。 然后,你可以从文件加载信息,并检查校验值,如果日期小于当前日期。 然而,重新下载如果失败和许可证未过期保持让他们使用的应用程序,但显示一个通知,告诉他们许可验证已经有一个错误。 该许可证过期的日期{}应该许可从缓存日到期块应用告诉他们,他们需要检查有服务器连接到互联网,如果不工作的手机你。

如果这些方法都失败,他们然后你可以用钢笔驱动器,有一点就可以了应用程序与有新的许可信息更新存在缓存文件,使他们能够再次使用该软件,现在缓存流行的,我会建议你使用2路加密的base64 EG但是我会建议一个强一点

那么你的托管解决方案只需要加载的类并为您所请求的版本的许可证,没有任何职务,或者如果你想这样你就不会有单独的托管应用程序和许可证服务器,你可以实现对本地副本相同的检查2个不同的代码库

注意:你不必送虽然companyId你可以只搜索数据库使用你的数据库的SHA1功能,这样做的直接查找核实,以获取到期和东西

安全数据:如果您实现一个安全的应用程序,它认为不能暴露出于某种原因,以减少黑客攻击做出不同的端口上的许可证制度,并在服务器设置允许它只能建立从该端口上conections数据外部调用首先在Linux路由盒子将是理想的本作的iptables可以做到这一点很简单,我不知道它是安装程序在Windows多么容易

更新: 保护从归零许可证

你可以实现阻止人们“归零”您的许可,并且不需要任何本地更改的另一个特点是在许可证服务器验证有主机名,所以当许可证密钥用于在第一时间将其保存的主机名来对数据库许可证密钥如果另一个请求从一个不同的主机名进来告诉他们,他们有与您联系重新启用有许可证,因为主机名称已更改大多数公司应该运行一个静态的IP地址,以便他们将永远有一个静态的主机名,即使它有ISP的主机名

这仍然不会停止经验的人,他们可以绕过所有他们所需要的环回黑客以防止您的应用程序说你的服务器,那么他们就必须建立一个虚拟的服务器上有循环回用虚假信息作出反应

一英里

你可以阻止这种通过使许可制度一个C#库和应用程序下载新版本卸载在新的DLL大会现有的装配,并加载你只需要确保你不改变你的公共方法的名称,然后就可以添加更多的安全性没有打破服务器或一个完整的客户端更新,这样,你也可以使用某种形式的AES或通信证书基于加密的,你编译证书到使用嵌入式资源DLL。

通过以上你甚至可以去一个更好的,做一个新证书为每个许可证密钥,这应该使“归零”极其困难*

正如另一个不是*,这将需要服务器编译DLL我会强烈建议你不要做这样的托管服务器上,因为它会使用大量的内存和CPU能力,以尽量减少这种使用的MSBuild,并保持所有的编译数据,所以唯一的变化是证书应该意味着它使.pdb文件,并应编译快很多



文章来源: Enforcing Licenses from Locally Hosted Web Applications [closed]