我使用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) 然后在安装过程中,我将更改“哈希”文件中的系统UNIQUE_ID,创建一个对象,并将其保存到文件(nav.obj)中:
(install.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。