你可曾思索过,你费尽心力所开发的PHP网站源码,或许正遭人肆意复制,且被无限制地安装于其他人的服务器之上,然而你自身却连一分钱都无法获取?这恰恰是无数独自开发者以及中小规模公司的真切痛点所在。接下来的这五种具备实战性质的授权保护办法,能够从域名、硬件、时间等诸多维度为你的源码安装上“防盗门”,从而保障每一份授权都能切实实现变现。
域名绑定锁死第一道门
将代码放进程序入口文件,像index.php的最顶部位置,直接写入域名验证代码。代码的逻辑是这样的,先去获取当前有人访问的那个域名,接着把这个域名拿去跟提前进行加密处理后存储起来的许可域名列表进行比对。比如说,你对“baidu.com;taobao.com”用base64进行加密存储,代码在运行的时候先进行解密而后再去匹配。
要是当下的域名并不处于许可列表之内,那就径直调用exit或者die函数去终止程序的运行,并且输出诸如“未授权访问”这般的提示。这儿存在着一个关键的细节:许可的域名绝对不可以明白地存储,不然的话别人把文件打开就能够修改。建议采用系统配置文件加上常量的方式来存储,接着运用AES算法做二次加密,确保就算拿到了文件也没办法修改授权。
在线验证动态管理授权
在网站开始初始化的那个阶段,运用cURL朝着你亲自搭建起来的授权服务器去发送POST请求,所携带的参数能够是由站点域名与服务器IP组合而成的唯一标识。授权服务器在收到请求之后去查询数据库,进而返回一个JSON格式的数据,举例来说像{"status":1"msg":"授权有效"}。
解析这个返回结果的本地脚本,若status并非等于1,那就直接停止执行,并且跳转到你的续费页面。为防止授权服务器挂掉致使用户网站瘫痪,必须设置5秒超时机制,超时后默认通过验证,且记录日志。建议每隔7天自动触发一次验证,因为此既能减轻服务器压力,又能够及时封掉盗版站点。
加密核心文件防止反编译
借助Swoole Compiler或者SourceGuardian这类专业工具,把存放核心业务逻辑的PHP文件统统加密,加密之后会产出二进制文件,原本的PHP代码全然不可读,部署之际要求用户安装对应的解密扩展,像Swoole Loader。
在加密的文件开始执行以前,代码当中还需要去验证是不是存在特定的许可证文件。这个许可证文件能够借助后台生成,其中涵盖域名以及IP的校验信息。只有当解密扩展加载完成而且许可证验证通过,主程序才会被加载到内存当中去执行。加密过后的文件就算被下载了,要是没有配套的扩展以及许可证也是没有任何用处的。
硬件绑定锁定服务器指纹
利用PHP去执行系统命令从而采集硬件信息,在Linux服务器环境下借助命令来获取网卡MAC,面对Windows服务器时也是用命令来进行获取。将这些信息予以拼接之后运用MD5生成一串独一无二的机器码,像“8A:BC:3D:…45:EF”与硬盘序列号进行组合。
用户于购买授权之际,会将这一串机器码发送予你,而后你于后台生成与之对应的密钥文件,并发送给用户。每当程序运行之时,都会重新计算机器码,再与密钥文件之中的码进行比对,一旦不一致便停止运行。需留意虚拟主机有可能无法获取真实MAC,在此种情形之下,可改用网站物理路径的inode值作为备选方案。
时间控制实现订阅续费
在数据库的配置表之中写入授权截止时间字段,其格式采用标准的“Y-m-d H:i:s”。每一次请求进入框架之前,均要拿服务器当前时间跟这个截止时间进行比较,倘若当前时间大于截止时间,便直接跳转到续费页面,所有业务接口皆返回错误码。
和远程版本检查接口相组合的情况更深恶,按照固定周期朝着你的服务器发出获取最新版本号那种请求,若侦查、探知用户版本处于较低水平并且已经度过了维护期限,那就强行使得运行停止同时给出升级这种提示。为了避免、防止用户通过修改服务器时间的方式来避开限制,能够按照固定周期运用NTP协议从授时中心那里取得标准时间来开展比对,一旦察觉到时间存在异常同样对程序实施锁定。
最让你在保护源码之际感到头疼的是碰到怎样的破解方式呢,欢迎于评论区去分享你的经历,点赞并收藏本文以使更多开发者能够看到这些实用技巧。


还没有评论,来说两句吧...