【问题标题】:Does this way protect my PHP Source?这种方式可以保护我的 PHP 源代码吗?
【发布时间】:2013-11-19 18:05:22
【问题描述】:

(抱歉我的英语不好!)

为了保护我的php源代码,我只想用ioncube加密一个文件(例如function.php),然后我想在其他php文件中调用加密后的文件! (其他php文件会用mcrypt函数加密。)

请看示例:

函数.php

<?php

// Only This file will be encrypted by the ionCube

  function simple_encrypt($text)
    {
$salt='whatever_you_want';
        return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
    }

    function simple_decrypt($text)
    {
$salt='whatever_you_want';
        return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
    }

function decrypt_and_run($text) {
eval (simple_decrypt($text));
}

?>

script1.php

<?php
include "function.php";
decrypt_and_run("Mz/PKIZDmo1/VW4BNXX2d+XQD2dx1aB9gnBj1hbGzVM=");
// Mz/PKIZDmo1/VW4BNXX2d+XQD2dx1aB9gnBj1hbGzVM=   ~   echo "hello world1!";
?>

script2.php

<?php
include "function.php";
decrypt_and_run("oD3R8wPlUujQEkJfyPvTJOKek7MjzAuGBn+PfyssjZ4=");
// oD3R8wPlUujQEkJfyPvTJOKek7MjzAuGBn+PfyssjZ4=   ~   echo "hello world2!";
?>

script3.php

<?php
include "function.php";
decrypt_and_run("vMef6WP9xm1nmsAYMSgxFRY2nhBPTNWog3rLOGhb69Y=");
// vMef6WP9xm1nmsAYMSgxFRY2nhBPTNWog3rLOGhb69Y=   ~   echo "hello world3!";
?>

1) 这种方式是否可以完全保护我所有的 PHP 源代码? (function.php, script1.php, script2.php, script3.php,...)

2) eval 函数是否适用于 ioncube 或 Zend Guard?

谢谢。

【问题讨论】:

  • 重要的问题是为什么您要“保护”您的 PHP 源代码?你只是为自己掩盖它。如果任何访问您页面的用户看到您的 PHP,那么您需要修复您的网络服务器的配置。
  • echo simple_decrypt($text); 完成。
  • 根据我的经验,加密 PHP 软件是不值得的:它已经受到版权法的保护,如果您担心您的客户可能不值得信任并窃取您的代码,那么他/她不应该成为您的客户第一名。
  • 如果您已经费尽心思设置和运行 ioncube 或 zendguard,为什么还要编写一个半途而废的加密函数? 只需使用您刚刚安装的东西。
  • 准确地保护从谁以及为什么?任何与安全相关的问题都必须指定一个场景,应该保护什么免受什么影响。

标签: php encryption


【解决方案1】:

隐藏代码只会使开发更加困难并增加 CPU 周期(从而减慢您的脚本速度)。所有代码都是可反向工程的。你最好只声明正确的许可证和/或使代码只对开发人员可用

【讨论】:

    【解决方案2】:

    我过去曾尝试过类似的方法来避免逆向工程。您可以使用 IonCube 或 zend Guard 混淆所有代码。 但你的方式,eval=evil...

    在完全 dotNet 上有一个 PHP 实现。 Phalanger

    我过去用过,但简单的东西,但我听说过它的好东西。试试吧。。

    【讨论】:

    • 我想在 linux 服务器上运行我的脚本。
    猜你喜欢
    • 2014-06-22
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2022-11-18
    • 1970-01-01
    相关资源
    最近更新 更多