Php 我还可以如何检查用户的程序?

Php 我还可以如何检查用户的程序?,php,c++,Php,C++,目前,我的朋友有一个程序,检查用户的Windows CD密钥,然后进行单向加密。然后,他将新生成的数字添加到程序中以进行检查,然后编译并发送给客户机。在不使用任何登录系统的情况下,有没有更好的方法来防止程序以某种方式使用PHP而不是他当前的方法被共享。简而言之,任何使用密钥的程序都可以通过某种方式被伪造。尤其是当源代码可用时(大多数PHP项目都是这样,如果你真的想要一些专业的东西,你可能需要研究一下),但在我看来,大多数安全系统对客户来说都是一件痛苦的事情 我曾经遇到过一个很好的系统,它是一个C

目前,我的朋友有一个程序,检查用户的Windows CD密钥,然后进行单向加密。然后,他将新生成的数字添加到程序中以进行检查,然后编译并发送给客户机。在不使用任何登录系统的情况下,有没有更好的方法来防止程序以某种方式使用PHP而不是他当前的方法被共享。

简而言之,任何使用密钥的程序都可以通过某种方式被伪造。尤其是当源代码可用时(大多数PHP项目都是这样,如果你真的想要一些专业的东西,你可能需要研究一下),但在我看来,大多数安全系统对客户来说都是一件痛苦的事情

我曾经遇到过一个很好的系统,它是一个C编译的库,有许多冗余的代码检查(像意大利面条一样的调用树),可以验证加密的序列号。由于该应用程序是定制的,并且没有太多的发布版本,因此没有“裂缝”可供使用,当经销商破产时,客户陷入了困境。最终,这段代码还是被破解了


在我看来,唯一真正安全的方法是托管您的应用程序,不发布任何源代码,然后让客户机支付许可证费用,只向他发送他必须为每个请求发送的API密钥。

简而言之,任何使用密钥的程序都可能以某种方式伪造。尤其是当源代码可用时(大多数PHP项目都是这样,如果你真的想要一些专业的东西,你可能需要研究一下),但在我看来,大多数安全系统对客户来说都是一件痛苦的事情

我曾经遇到过一个很好的系统,它是一个C编译的库,有许多冗余的代码检查(像意大利面条一样的调用树),可以验证加密的序列号。由于该应用程序是定制的,并且没有太多的发布版本,因此没有“裂缝”可供使用,当经销商破产时,客户陷入了困境。最终,这段代码还是被破解了


在我看来,唯一真正安全的方法是托管您的应用程序,不发布任何源代码,然后让客户端支付许可证费用,只向他发送他必须为每个请求发送的API密钥。

幸运的是,我在这一领域做了广泛的研究,这是一种更实惠的,有人说Zend Guard更安全的选择是。它允许绑定到IP地址、MAC地址、域和时间。他们还正在开发一个版本,该版本将支持连接到计算机上的物理加密狗。他们也经常发布,并且有很好的支持

另一个价格合理且安全的选项是,它们具有与SourceGuardian类似的选项,但也允许该选项绑定到唯一生成的硬件id

在我看来,SourceGuardian和NuCoder都是最好的,但是NuCoder在支持最新PHP版本方面落后了。目前,它们最多支持5.2,而SourceGuardian支持最新版本,包括5.3


此外,由于您的代码被转换为受保护的字节码,您还可以获得速度优势,因为PHP不需要采取额外的步骤将代码转换为字节码。然而,正如前面的评论所指出的,这将要求用户安装必要的加载程序,然而,这通常需要在php.ini中添加一行代码,或者在>5.2.6的情况下,否则通常不需要添加任何代码。

幸运的是,我在这方面做了广泛的研究,这是一种更经济的,有人说Zend Guard更安全的选择是。它允许绑定到IP地址、MAC地址、域和时间。他们还正在开发一个版本,该版本将支持连接到计算机上的物理加密狗。他们也经常发布,并且有很好的支持

另一个价格合理且安全的选项是,它们具有与SourceGuardian类似的选项,但也允许该选项绑定到唯一生成的硬件id

在我看来,SourceGuardian和NuCoder都是最好的,但是NuCoder在支持最新PHP版本方面落后了。目前,它们最多支持5.2,而SourceGuardian支持最新版本,包括5.3

此外,由于您的代码被转换为受保护的字节码,您还可以获得速度优势,因为PHP不需要采取额外的步骤将代码转换为字节码。但是,正如前面的评论所指出的,这将要求用户安装必要的加载程序,然而,这通常需要在php.ini中添加一行代码,或者在>5.2.6的情况下,否则通常不需要添加任何代码