建站老欧-服务器维护-宝塔多版本PHP安装php-screw-plus扩展来保护php代码安全

宝塔多版本PHP安装php-screw-plus扩展来保护php代码安全

建站老欧 2022-03-04 标签

宝塔多版本PHP安装php-screw-plus扩展来保护php代码安全

 

Php-screw-plus是一个开源的php扩展,作用是对php文件进行加密,网络上提供php加密的服务很多,但大多都只是混淆级别的加密,被人拿到加密文件问只要有足够耐心就能破解,与之不同的是,screw plus采用扩展来加解密,而且是全球金融业流行的高强度AES256加密,除非破解了服务器,否则黑客拿到了加密文件也只是一堆乱码。

 

在宝塔下安装多版本PHP的操作方法:

  • 下载

https://github.com/del-xiong/screw-plus

http://git.oschina.net/splot/php-screw-plus

 

进入服务器,任何目录下,最好是新建一个扩展目录,执行下面的代码,克隆程序文件

克隆一份代码到服务器:

git clone https://git.oschina.net/splot/php-screw-plus.git

  • 下执行phpize是官方提供的可执行文件用于动态生成扩展开发环境

 

在进入php-screw-plus目录执行 /usr/bin/phpize

出现:

/usr/bin/phpize

Configuring for:

PHP Api Version:        20190982

Zend Module Api No:      20190982

Zend Extension Api No:  320190902

出现上面的代码,说明执行成功,执行成功后可以看到当前的php api版本,扩展api版本等

 

3,执行配置

配置命令为 ./configure --with-php-config=[php-config], [php-config]一般也在多版本php对应版本的bin目录下,写绝对路径就可以了。

./configure --with-php-config=/www/server/php/72/bin/php-config

如果没报错,说明配置成功了,可以开始下一步编译了。

4,修改加密密钥

进入php-screw-plus文件夹内,修改文件php_screw_plus.h
修改加密的key,打开php_screw_plus.h可以看到开头就是 #define CAKEY "..." ,把里面的值改为一个足够复杂的key,最好16位以上,比如:1231LSD2fjdsksl131FSslfs

使用vi编辑器打开文件:

vi php_screw_plus.h

按intert 写入或修改文件内容

保存退出命令:
Shift + :   (按键shift 加 冒号),执行命令输入, 执行wq 保存并退出编辑

修改完毕之后,

 

  • 直接开始编译,

A.编译的是解密程序

执行make命令,如果最后显示Build complete.说明编译成功,扩展在modules里面,如果报错请根据提示进行修复,然后make clean之后重新编译。

make

...

Build complete.

上面我们编译的是解密程序,而加密程序也需要我们手动编译一下,进入tools目录执行make命令即可。如果没有报错,则扩展就全部编译完成了。

B.编译的是解密程序:

cd tools/   进入tools目录,再执行make 编译

make  

  • 扩展PHP

把扩展的路径加入到php.ini中,你可以把modules/php_screw_plus.so复制到php扩展目录也可以直接在ini中加入绝对路径,我一般倾向于绝对路径这样修改编译了扩展也不需要重新复制过去。


vi /www/server/php/72/etc/php.ini

加入绝对路径例如

extension=/root/php-screw-plus/modules/php_screw_plus.so

然后重启php服务 这时可以放个php文件输出phpinfo信息,如果看到以下提示说明扩展生效了。

 

查看phpinfo信息:

在扩展的tools目录,执行./screw [路径],[路径]可以是单个文件也可以是文件夹,然后就可以实现加密了。

加密完成后查看源码,可以发现除了开头的几个英文字符外,其余的都成了乱码。

但是打开网站,php运行正常,如同没有加密一样。经过测试,解密速度大约为100M每秒,对php自身的性能损失非常小,一般不到20毫秒。

screw plus还有个功能,可阻止执行未经许可的php文件,这样黑客就算上传了代码也然并卵。

同样在php_screw_plus.h里修改,把STRICT_MODE后面的值改为1,然后make clean && make重新编译并重启php,然后打开之前加过密的网站,执行正常,但是我们随意上传个明文的php文件,结果是一片空白。

原因是未加密的php文件头部不包含识别key,扩展会返回空内容,就算黑客获取了key并加入也没用,内容会被解密成乱码仍然无法执行。经过screw plus的保护,即使网站整站被下载或被上传了恶意代码,也无法对网站造成损失。



作者:放开那头熊
参考链接:https://www.jianshu.com/p/f6425e2f8643

标签 Light
相关内容