1、简介
php-beast可以对PHP源码文件进行加密,加密后的文件也可以正常的访问。
2、安装php-beast
# 下载php-beast wget https://github.com/liexusong/php-beast/archive/master.zip# 解压下载的文件 unzip master.zip# 进入解压后的目录 cd php-beast-master# 生成配置文件 phpize# 检测系统环境,确认是否具备编译和安装所需的依赖项。如果加上参数【--enable-execute-normal-script=off】可以禁止执行未加密的PHP脚本。 ./configure# 安装 sudo make && make install
安装完毕后,修改 php.ini 文件,添加【extension=beast.so】配置项后重启php-fpm。
3、配置与使用
3.1、配置
3.1.1、php-beast是开源项目,为防止网上的解密软件识别我们的加密文件,所以需要修改加密的key,增强加密的安全性。
- header.c:加密文件头结构
- aes_algo_handler.c:使用aes模块就修改此文件
- des_algo_handler.c:使用des模块就修改此文件
3.1.2、根据需要修改 configure.ini 的配置内容。
- src_path:要加密项目的路径。
- dst_path:保存加密后项目的路径。
- expire:设置项目可使用的时间 (expire 的格式是:Y-m-d H:i:s )。
- encrypt_type:加密的方式,选择项有:DES、AES、BASE64。
3.1.3、设置指定的机器上运行,要使用此功能可以在 networkcards.c 文件添加服务器的IP地址。
注意:由于有些机器网卡名可能不一样,所以如果你的网卡名不是 eth0 的话,可以在 php.ini 中添加配置项: beast.networkcard = "xxxx" 其中 xxxx 就是你的网卡名,也可以配置多张网卡,如:beast.networkcard = "eth0,eth1,eth2"。
3.2、使用
3.2.1、可用函数
- beast_encode_file(): 用于加密一个文件
- beast_avail_cache(): 获取可以缓存大小
- beast_support_filesize(): 获取beast支持的最大可加密文件大小
- beast_file_expire(): 获取一个文件的过期时间
- beast_clean_cache(): 清空beast的所有缓存(如果有文件更新, 可以使用此函数清空缓存)
3.2.2、编写PHP代码加密
# $file 要加密的php原文件,$targetFile 加密后的文件,$res 加密成功返回true $res = beast_encode_file($file, $targetFile);
3.2.3、工具加密
在解压后的目录中有个tools目录,其目录下有两个文件,一个是加密单个文件,一个是加密目录下的所有PHP文件。
(1)加密一个文件:encode_file.php
使用格式:php encode_file.php --oldfile old_file_path --newfile new_file_path --encrypt DES --expire "2024-12-12 12:12:12"
- --oldfile:加密文件的路径
- --newfile:加密后文件的路径
- --encrypt:加密方式
- --expire:过期时间
(2)加密目录下的所有PHP文件:encode_files.php
第一步必须先配置【configure.ini】文件
第二步在tools目录下执行【php encode_files.php】
3.2.4、加密效果
3.2.5、注意:我所使用的是PHP7.4版本的,加密后网站是可以正常访问,实操验证过。可据其他PHPer说PHP8版本不支持,我没验证过。
4、参考资料
- https://github.com/liexusong/php-beast