我有一个 ASP.Net 应用程序,它托管在我公司客户内部网络上的 Web 服务器上。
我希望执行各种已知的许可条款(到期日期/用户数量等)
我打算使用一个加密的 xml 文档,其中包含作为键/值对的术语,并将其作为加密的平面文本文件存储在 Web 服务器上。
然后,我计划使用自定义安全 Httpmodule 来解密加密文件,并将术语提取并存储在内存中(应用程序?),然后在应用程序相关区域的每个页面请求期间强制执行这些术语。
是否有更好的方法来执行 Web 应用程序的许可条款?
我选择了一条不同的路线:我只是将许可信息放在数据库中的加密字段中,这样我就不必担心 Httpmodule。SQL Server 具有 EncryptByKey 和 DecryptByKey 函数,可以很容易地获取/放置加密数据。我还使用了一个简单的密码密钥来使整个过程非常易于管理。我很欣赏你的方法——它真的很聪明——但我认为你让自己的生活有点太难了!
就安全性而言,只要您实际上不提供源代码,这是相对安全的。唯一的缺点是他们可能会反汇编您的代码以尝试提取密码或其他加密技术(这可能也适用于您的 Httpmodule 方法)。然而,这并不是我担心的事情,因为我主要与财富 500 强公司合作,并且我与他们签订了包含“禁止拆卸”条款的法律协议。绝大多数公司根本不会为了获得一些额外的功能或扩展他们的数据库而这样做而冒着法律危险。另一方面,如果您要分发给数以千计的匿名用户,那么情况可能就不同了。
更新:如果您不使用 SQL Server,您还可以使用某种形式的基于代码的加密来保存/检索您的许可信息。如果您需要加密类,我为之前的答案上传了一个简单但非常强大的 AES 类。