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