PHP编码后的代码安全性如何?那混淆呢



使用第三方编码器(IonCube、Zend Guard)对PHP代码进行编码后。在编码器中使用反射怎么样?这不是泄露了很多代码吗?

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

我的解决方案是在对代码进行模糊处理后对其进行编码(自定义编写的模糊处理程序)。所有内容都被缩小为一个文件并进行模糊处理。任何超出本机PHP函数/变量的内容都是胡言乱语。

这样,如果在某个时刻对代码进行解码,结果将是一个混乱、令人麻木的代码。

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

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

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

那么,你如何评价代码的安全性呢?混淆值得吗?

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

谢谢,
Fouad

使用第三方编码器(IonCube、Zend Guard)对PHP代码进行编码后。在编码器中使用反射怎么样?这不是泄露了很多代码吗?

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

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

嗯,什么都没有。在某种程度上,代码仍然需要执行。要执行,它需要有一个操作码数组。操作码数组列出每个函数中的每个操作。

由于从操作码转换为PHP代码并不困难,一旦在有效的环境中运行,编码器基本上只不过是模糊处理程序。

编码器可以做的增值是加密操作码,这样你就不能在未经许可的服务器上运行它。但一旦你能运行代码,你就可以用它做任何你想做的事

用旧版本编码的代码一定会在某个时候被破解。

没有。所有版本的代码都可以被破解。它所需要的只是被执行的能力。

我的解决方案是在对代码进行模糊处理后对其进行编码(自定义编写的模糊处理程序)。所有内容都被缩小为一个文件并进行模糊处理。任何超出本机PHP函数/变量的内容都是胡言乱语。

这正是编码器的作用。除了公共代码(设计用于与开发人员交互或由开发人员扩展)之外,其余的都只是指针。所有命名信息都将丢失。因此,自己混淆它是没有必要的。

那么,你如何评价代码的安全性呢?混淆值得吗?

你还没有回答的问题是你试图保护代码不受谁的攻击。

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

你担心有人修改你的代码吗?好吧,他们无论如何都能得到代码。。。所以…

你是否担心有人通过查看代码来找到东西?比如安全漏洞?好吧,他们无论如何都能做到。试图混淆它是无济于事的。

你担心普通用户修改吗?那么编码将防止这种情况发生。

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

另一种选择是许可。你不需要隐藏代码来保护它。根据限制性的商业许可证进行许可。并利用法律制度追查任何盗窃或破坏许可证的人。这是保护软件的唯一有效方法。

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

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

最新更新