Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 外部模块安全_Delphi_Licensing_Bpl - Fatal编程技术网

Delphi 外部模块安全

Delphi 外部模块安全,delphi,licensing,bpl,Delphi,Licensing,Bpl,我正在为一个应用程序开发一些外部模块 这些模块是BPL文件,如果存在于应用程序文件夹中,应用程序将加载它们并使用其中可用的任何内容 如何防止客户端共享这些模块 我需要授权他们使用这些模块(一个模块接一个模块) 要获得某种许可证,注册模块,最好的方法是什么 谢谢简单的想法(1): 我假设您的客户机都有某种唯一的ID(序列号、许可证号)。当你合法地给你的一个客户一个BPL时,给他两个文件:BPL本身+一个包含BPL名称+用户许可证号散列的文件。如果无法验证哈希,请不要加载BPL。确保你没有散列BPL

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

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

如何防止客户端共享这些模块

我需要授权他们使用这些模块(一个模块接一个模块)

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

谢谢

简单的想法(1): 我假设您的客户机都有某种唯一的ID(序列号、许可证号)。当你合法地给你的一个客户一个BPL时,给他两个文件:BPL本身+一个包含BPL名称+用户许可证号散列的文件。如果无法验证哈希,请不要加载BPL。确保你没有散列BPL本身,你最终会遇到心烦意乱的客户,他们无法使用你的BPL,因为他们感染了病毒

简单的想法(2): 让您的BPL导出一个类似于以下内容的函数:
函数OkForClient(ClientID:string):Boolean
。这允许您将验证从BPL更改为BPL

复杂的想法:
花一周时间学习非对称加密,用攻击者即使知道算法也无法复制的内容替换第一个选项中的哈希文件。

BPL只是可执行代码,您可以像许可任何其他代码一样许可它们,包括“主”代码明智的想法:使用第三方解决方案,避免重新发明wheel@David,应改为:“如果您需要询问有关安全性的问题,请使用第三方解决方案”。我从来不会向任何第三方信任我自己代码的安全性,但我想我知道我在做什么。这是一个值得重新发明的轮子:你在掌控之中,没有针对你的第三方提供商方案的普通黑客会让你得逞。