php中文网最新课程

每日17点准时技术干货分享

虽然PHP是世界上最好的语言,但是也有一些因为弱类型语言的安全性问题出现。WordPress历史上就出现过由于PHP本身的缺陷而造成的一些安全性问题,如CVE-2014-0166 中的cookie伪造就是利用了PHP Hash比较的缺陷。

下面为大家介绍一种源码加密技术:

加密软件(php_screw)

下载地址:

http://sourceforge.net/projects/php-screw/

描述:

php文件通常以文本格式存贮在服务器端, 很容易被别人读到源代码, 为了对源代码进行保护, 可以采用对源代码进行加密的方式.要实现该功能需要两部分。

一是:

加密程序,实现对PHP文件的加密;

另一个就是:

对加密过的PHP文件进行解析, 以得到运行结果. 前者的实现比较简单, 就是一程序而已. 后者的实现大部分都是通过php module的形式来实现的。

php_screw(螺丝钉)可以实现以上的功能.最新版本是1.5,可以在sourceforge上下载.

php_screw 是一个日本人开发的PHP加密程序,但只能在LINUX下运行。

安装

描述:

安装的目的其实就是产生两个文件,一个是用于加密PHP文件的screw, 另一个就是php加载的解析模块php_screw.so。

安装环境

系统:centos 5.3

软件:Apache 2.2.9

PHP 5.2.10

以上环境全部是自己下载配置安装的。具体的Apache+php+mysql安装方法请从网上搜索。

安装步骤

1.用tar解压缩 tar -zxvf php_screw-1.5.tar.gz

2.进入php_screw-1.5目录开始安装

cd php_screw-1.5phpize

关于phpize ,它在php5-dev扩展模块中 只要安装php5-dev模块就行了。

./confiugre

3.设置自己用来加密的密码

代码如下:

vi my_screw.h -- Please change the encryption SEED key (pm9screw_mycryptkey) into the    values according to what you like.    The encryption will be harder to break, if you add more values to the    encryption SEED array. However, the size of the SEED is unrelated to    the time of the decrypt processing. *  If you can read and understand the source code, to modify an original        encryption logic will be possible. But in general, this should not        be necessary.   OPTIONAL: Encrypted scripts get a stamp added to the beginning of the        file. If you like, you may change this stamp defined by        PM9SCREW and PM9SCREW_LEN in php_screw.h. PM9SCREW_LEN must        be less than or equal to the size of PM9SCREW.

4.编译

make

5.拷贝modules目录下的php_screw.so文件到/usr/lib/php5/extension目录下

cp modules/php_screw.so /usr/lib/php5/extension/

6.编辑php.ini文件

在php.ini文件里,加入如下语句

extension=php_screw.so

7.重新启动Apache

/srv/apache/bin/apachectl restart

8.编译加密工具

cd toolsmake

9.将tools目录下加密用的工具screw拷贝到适当目录

cp screw /usr/bin/

经过以上的10步,就已经把php_screw-1.5全部安装完成了。并且现在的php也已经支持解释加密过的php文件了

使用

1.先写一个要加密的php文件。

我写了如下的一个用来测试php速度的test.php文件

代码如下:

$a=0;$t=time();for($i=0;$i<5000000;$i++)  {$a=$a*$i;}$t1=time();echo "

"

;echo "It used:";echo $t1-$t;echo "seconds";?>

将上面的test.php文件放到/var/www/目录下。通过浏览器访问,将显示出php在大量计算时的速度(粗略估计)

2.将我们写的php文件加密

cd /var/www/screw test.php

我们加密后,现在目录下的test.php文件就是我们已经加密的了。而源文件被改名为test.php.screw存放了。

我们现在再测试一下test.php,看看能否正常使用?速度如何?

我比较了一下,加密前后的速度大概一样,基本没有太多的损失。

3.批处理加密文件

在debian, apache2, php5上测试过对.html文件加密后,能正确解析;

php_screw如何对当前目录下,对目录下包含的文件,以及包含目录下的文件进行整体加密

find ./ -name "*.php"-print|xargs -n1 screw //加密所有的.php文件find ./ -name "*.screw" -print/xargs -n1 rm //删除所有的.php源文件的备份文件

这样在当前目录下的所有.php文件就全部被加密了。

-END-

声明:本文选自「 php中文网 」,搜索「 phpcnnew 」即可关注!

html源码加密ensure-china_php源码加密方法详解相关推荐

  1. aes js加密php解密实例,基于PHP和JS的AES相互加密解密方法详解(CryptoJS)_PHP_JS_AES源码...

    [实例简介] 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)_PHP_JS_AES源码 [实例截图] [核心代码] 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)_ ...

  2. KBQA_多轮对话——模型源码解析(一)Pickle模块功能详解

    KBQA_多轮对话--模型源码解析(一)Pickle模块功能详解 pickle --- Python 对象序列化的基本功能 1.pickle基本概念 2.pickle 与 json 模块的比较 3.p ...

  3. 【SA8295P 源码分析】53 - mifs.build.tmpl 脚本详解:启动QNX procnto-smp-instr微内核、启动QNX串口终端shell、加载解析并执行ifs2_la.img

    [SA8295P 源码分析]53 - mifs.build.tmpl 脚本详解:启动QNX procnto-smp-instr微内核.启动QNX串口终端shell.加载解析并执行ifs2_la.img ...

  4. 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)

    在最近的项目中,前端后台数据交互需要进行加密之后传输使用,以保证系统数据的安全.有关数据加密解密的问题,有很多种加密的方式,在这里我选择了AES的加密方式.特此写下此篇博文,总结讲述下PHP和JS进行 ...

  5. Java SHA-256加密的两种实现方法详解

    利用Apache的工具类实现加密,使用commons-codec包中的DigestUtils算法工具类(入参支持字符串.字节数组.文件流等): maven: 1 2 3 4 5 <depende ...

  6. FatFs 之一 R0.13c版源码目录文件、函数、全配置项详解及移植说明

      FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块.FatFs 模块的编写符合 ANSI C(C89),并与磁盘 I/O 层完全分离,因此它独立于硬件平台. 它可以集成到资源 ...

  7. statement执行insert into语句_【图文并茂】源码解析MyBatis ShardingJdbc SQL语句执行流程详解...

    源码分析Mybatis系列目录: 1.源码分析Mybatis MapperProxy初始化[图文并茂] 2.源码分析Mybatis MappedStatement的创建流程 3.[图文并茂]Mybat ...

  8. 【工厂扫码打印扫码装箱错误追溯系统】完整案例详解(PythonPyQt 源码Mysql数据库)

    一. 市场需求 目前很多工厂产品装箱过程中仍存在一些问题: 商品打包发货出错,少发,错发,漏发 --- 追溯问题到底出在哪个环节? 手工制作装箱单,发货单,打印商品条码标签,外箱标签 --- 花费太多 ...

  9. 在线代答代码php,代答接入 打码免的使用入门以及函数使用详解 包含源码

    首先软件初始化 //软件初始化 //参数1 填入你的软件名 参数2 填入软件KEY 返回码 = Plugin.Dama2QMPlugin.Init("这里是你在开发者里面创建软件的名字&qu ...

  10. redis源码阅读-持久化之aof与aof重写详解

    aof相关配置 aof-rewrite-incremental-fsync yes # aof 开关,默认是关闭的,改为yes表示开启 appendonly no # aof的文件名,默认 appen ...

最新文章

  1. 记录一次没有收集直方图优化器选择全表扫描导致CPU耗尽
  2. CPU缓存L1/L2/L3工作原理
  3. 拾趣——ios::sync_with_stdio(false)详解(提高代码运算速度)
  4. python开发工具与pycharm_python开发工具pycharm快速入门
  5. argparser_Java命令行界面(第22部分):argparser
  6. javadoc maven_Maven Fluido Skin和Javadoc类图
  7. android app应用签名生成工具,android应用签名详细步骤
  8. BZOJ-3227 红黑树(tree) 树形DP
  9. 自然语言处理NLP知识结构
  10. 人工智能——技术体系
  11. 基于mt7621架构路由器编译auditord(生成ipk包)
  12. 解决报错 See config.log for more details 的问题
  13. Java学习lesson 06
  14. 【Python 常用英文单词】——总结Python常用的英文单词 最全版
  15. 部分主元法求解线性方程组
  16. 2019 年 (C题) 线路负载及故障检测装置
  17. python脚本实现GNSS数据自动下载
  18. 用javascript分类刷leetcode4.贪心(图文视频讲解)
  19. Google 释出开源软件漏洞扫描工具 OSV-Scanner​
  20. Uncaught TypeError: Cannot read property ‘then‘ of undefined

热门文章

  1. Office组件无法正常使用的解决方法
  2. 面向对象设计思想_重要_2
  3. Windows下安装Elasticsearch
  4. C#面向对象三大特性
  5. 关于中文乱码问题(总结)
  6. CImage类 from http://blog.sina.com.cn/s/blog_487547aa0100an6k.html
  7. C言语教程第四章: 数组(4)
  8. 在线 SQL 数据库环境
  9. webshell使用方法-防止DDOS脚本-暴力破解-自动劫持root密码并转发密码到邮箱
  10. MySQL主从复制架构转换MGR架构(手动版)