【问题标题】:Enforcing License terms in my ASP.NET application [closed]在我的 ASP.NET 应用程序中执行许可条款 [关闭]
【发布时间】:2009-03-10 13:03:23
【问题描述】:

我有一个 ASP.Net 应用程序,该应用程序托管在我的公司客户内部网络上的 Web 服务器上。

我希望执行各种已知的许可条款(到期日期/用户数量等)

我打算使用一个加密的 xml 文档,其中包含作为键/值对的术语,并将其作为加密的纯文本文件存储在 Web 服务器上。

然后我打算使用自定义安全 Httpmodule 来解密加密文件 并在内存(应用程序?)中提取和存储术语,然后在应用程序相关区域的每个页面请求期间强制执行这些术语。

是否有更好的方法来执行 Web 应用程序的许可条款?

【问题讨论】:

  • 所以加密的 xml 文件将位于客户的网络服务器上,并且每次内部公司用户访问网站时都会检查您的许可证?
  • 没错。还是每 n 个请求?所以说每 1000 个请求/点击。正如 Mark Brittingham 评论的那样,这可能有点矫枉过正。如果出于某种原因我真的需要检查每个请求,我宁愿点击一个平面文件而不是数据库?
  • 其他术语例如(“对象”数量限制......用户可以动态创建/删除对象)。另一个示例是每月会话限制和/或每月最大请求限制。所以是按使用付费的模式。

标签: asp.net licensing


【解决方案1】:

我选择了不同的路线:我只是将许可信息放在数据库中的加密字段中,这样我就不必担心 Httpmodule。 SQL Server 具有 EncryptByKey 和 DecryptByKey 函数,可以很容易地获取/放置加密数据。我还使用了一个简单的密码密钥来使整个过程非常易于管理。我很欣赏你的方法——它真的很聪明——但我认为你让自己的生活有点太难了!

就安全性而言,只要您实际上不提供源代码,这是相对安全的。唯一的缺点是他们可能会反汇编您的代码以尝试提取密码或其他加密技术(这可能也适用于您的 Httpmodule 方法)。然而,这不是我担心的事情,因为我主要与财富 500 强公司合作,并且我与他们签订了包含“禁止拆卸”条款的法律协议。绝大多数公司根本不会冒险冒险,因为他们这样做只是为了获得一些额外的功能或扩展他们的数据库。另一方面,如果您要分发给成千上万的匿名用户,那么情况可能就不同了。

更新:如果您不使用 SQL Server,您还可以使用某种形式的基于代码的加密来保存/检索您的许可信息。如果您需要加密类,我为 previous answer 上传了一个简单但非常强大的 AES 类。

【讨论】:

  • 谢谢马克。我正在使用 Rijndael 对称密钥算法。我喜欢 AES 类的 URL 友好性。
  • 是的 - 我的设计目标是:A) 简单的字符串到字符串的转换和 B) URL 友好,因为我需要通过 URL 发送和接受加密信息。在我的 URL 处理中,我总是对日期和时间进行加密,这样 URL 复制就不起作用了。如果您喜欢我的回答,请点赞!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 2023-03-28
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多