PHP编码后代码的安全性如何?混淆怎么办?

时间:2014-09-11 10:08:14

标签: php security encoding obfuscation

使用第三方编码器(IonCube,Zend Guard)编码PHP代码之后。 使用编码器反射怎么样?这不会给你很多代码吗?

据我所知,这些编码器有一个到期日期。使用旧版本编码的代码肯定会在某些时候被破解。

我的解决方案是对代码进行编码后对代码进行编码(自定义编写的混淆器)。将所有内容缩小为单个文件并进行模糊处理。超出本机PHP函数/变量的任何东西都是乱码。

这样,如果在某些时候代码被解码,结果将是一个混乱的,令人头脑麻木的代码。

代码是分布式的,每个客户端都有一个副本,它位于自己的LAMP服务器上。

无需担心调试,每次发布新版本时都会覆盖代码。

当然,这里有很多妥协。混淆限制了编码技术/框架的使用。

那么,您如何评价代码的安全性?混淆是否物有所值?

如果没有,有其他选择吗?你认为什么是最佳解决方案?

谢谢,
福阿德

1 个答案:

答案 0 :(得分:6)

  

使用第三方编码器(IonCube,Zend Guard)编码PHP代码之后。使用编码器反射怎么样?这不会给你很多代码吗?

它比那更微妙。 设计要交互的公共代码(函数名称,全局变量等)都将是公共的。

就使用反射而言,禁用内部函数/类的反射并不困难(这是他们会做的)。这不一定是错误,但它可能会返回垃圾。由于编码器可以访问C,因此假设他们可以做任何他们想做的事情。

嗯,没什么。在某些时候,代码仍然需要执行。要执行,它需要有一个操作码数组。操作码数组列出了每个函数中的每个操作。

由于从操作码转换为PHP代码并不困难,编码器基本上只比混淆器一旦在有效环境中运行

编码器可以执行的增值操作是加密操作码,以便您无法在非许可服务器上运行它。但是一旦你可以运行代码,你可以随心所欲地做任何事情。

  

使用旧版本编码的代码肯定会在某些时候被破解。

没有。可以破解包含所有版本的代码。它所需要的就是能够被执行。

  

我的解决方案是对代码进行编码后对代码进行编码(自定义编写的混淆器)。将所有内容缩小为单个文件并进行模糊处理。除了本机PHP函数/变量之外的任何东西都是乱码。

无论如何,这正是编码器的作用。除了公共代码(旨在与开发人员交互或扩展),其余的只是指针。所有命名信息都将丢失。所以不必自己弄乱它。

  

那么,您如何评价代码的安全性?混淆是否物有所值?

你没有回答的问题是你试图保护代码的人。

您是否担心有人使用您的代码未经许可?如果是这样,没有编码器可以保护您。因为所有用户需要做的是转储操作码并且他们可以拥有代码(没有变量名,但是他们不需要运行它)。它并不像那样微不足道,但它是100%可行的。

您是否担心有人修改您的代码?好吧,他们无论如何都可以获得代码...所以......

您是否关注有人在查找代码以查找内容?像安全漏洞一样?嗯,他们无论如何都可以这样做。试图模糊它并没有帮助。

您是否担心普通用户会进行修改?然后编码将阻止它。

  

如果没有,有其他选择吗?

另一种选择是许可。您不需要隐藏代码来保护它。根据限制性商业许可证授予许可。并使用法律系统追捕窃取或破坏许可证的任何人。这是保护软件的唯一有效方法。

  

您认为最佳解决方案是什么?

不编码,我可以告诉你: - )