【问题标题】:External modules security外部模块安全
【发布时间】:2011-02-28 21:19:45
【问题描述】:

我正在为应用程序开发一些外部模块。

这些模块是 BPL 文件,如果存在于应用程序文件夹中,应用程序会加载它们并使用其中可用的任何内容。

如何防止我的客户共享这些模块?

我需要他们被授权使用模块(一个模块一个模块)。

要获得某种许可,注册模块,最好的方法是什么?

谢谢

【问题讨论】:

  • BPL 只是可执行代码,您可以像授权任何其他代码(包括“主”exe)一样授权它们。

标签: delphi licensing bpl


【解决方案1】:

简单思路(一):

我假设您的客户都有某种唯一 ID(序列号、许可证号)。当您合法地将 BPL 提供给您的一个客户时,请给他两个文件:BPL 本身 + 一个包含 BPL 名称哈希的文件 + 用户的许可证号。如果无法验证哈希,请不要加载 BPL。确保您不对 BPL 本身进行哈希处理,否则您最终会遇到无法使用您的 BPL 的客户,因为他们感染了病毒!

简单思路(二):

让您的 BPL 导出一个类似于 function OkForClient(ClientID:string):Boolean 的函数。这允许您将验证从 BPL 更改为 BPL。

复杂的想法:

花一周时间学习非对称加密,用攻击者无法复制的东西替换第一个选项中的哈希文件,即使他们知道算法。

【讨论】:

  • 明智的想法:使用第 3 方解决方案,避免重新发明轮子
  • @David,应该是:“如果您需要询问安全性,请使用第 3 方解决方案”。我永远不会相信我自己的代码对任何第三方的安全性,但话又说回来(我想)我知道我在做什么。这是一个值得重新发明的轮子:您可以掌控一切,没有针对您的第 3 方提供商计划的通用黑客攻击会得到您。
猜你喜欢
  • 2015-06-16
  • 1970-01-01
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多