我已经使用 PHP 创建了一个应用程序,我将把它卖给我的本地市场。我将亲自去他们的位置安装/配置 Apache 和 MySQL 以及安装我自己的代码。
我想要一个安全系统,这样如果有人试图将我的代码复制到未经授权的机器上,它就不会运行。
我知道没有人可以阻止对应用程序进行逆向工程。甚至 .exe(二进制)文件都被破解,而 PHP(源代码)任何人都可以做到。
在我的国家,那些逆向工程师真的很难找到,所以我想提出最低限度的安全选项,例如:
1)创建类(例如,Navigation
),它标识系统信息,如 CPU ID、计算机名称或硬件 ID 的任何组合,以创建一个 UNIQUE_ID 并与我给定的 UNIQUE_ID 匹配(给我向其出售应用程序的个人)。如果有效,则返回导航菜单。否则它会简单地破坏数据库并通过抛出异常来停止执行,可能像:
class Navigation {
public function d() {
return current system UNIQUE_ID;
}
public function get() {
$a = file_get_contents('hash');
$c = $this->d();
if (crypt($c) != $a) {
//destory database
throw new Exception('');
} else {
return "<ul><li><a>home</a></li></ul>"; //navigation menu
}
}
}
2)然后在安装过程中,我将在“hash”文件中更改系统UNIQUE_ID,创建一个对象,并将其保存到一个文件(nav.obj)中:
(安装.php)
<?php
$a=new Navigation;
$out=serialize($a);
file_put_contents('nav.obj', $out);
3) 在 header.php 中(包含在每个文件中):
<?php
$menu=file_get_contents('nav.obj');
$menu=unserialize($a);
echo $menu->get();
?>
我知道这种方法不能完全证明,但我很确定大约 60% 的 PHP 开发人员将无法破解它!
现在我只需要获取当前系统的 UNIQUE_ID。