文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>浅谈从PHP内核层面防范PHP WebShell

浅谈从PHP内核层面防范PHP WebShell

时间:2011-01-18  来源:咖啡

[目录]

1. 简述
2. php的执行流程
3. php的生命周期
4. php源代码分析以及功能性代码的实现
5. 总结
6. 参考资料
 

 

一、简述

依据php特定运行环境、php某些特定函数缺陷、php普通函数可以实现变化多端的php webshell,php版本的scanwebshell也不是太给力。php webshell功能最大化就是实现文件、
目录、命令、数据库等操作,这些都是基于php代码实现的。把相关功能化的php函数运行参数提取出来,然后做一个判断,这样就能从本质上防范php webshell,在php这个层面实现
其安全的最大化。这里介绍下通过编写php扩展来实现这个思路,当然需要的话也可以重新编译php源代码来实现。

首先我们了解下php的执行流程、php生命周期,接下来通过分析具体函数的php源代码来实现功能性代码。
 

二、php的执行流程

2.1 scanner

将PHP代码转换为Tokens,详见代码Zend/zend_language_scanner.l。

2.2 parser

将Tokens转换成表达式,详见代码Zend/zend_language_parser.y。

2.3 compile

将表达式编译成opcode。opcode存放在op_array中。

2.4 execute

Zend Engine调用zend_execute来执行op_array,输出结果。


三、php的生命周期

3.1 STARTUP

1、初始化引擎和核心组件。
2、解析php.ini。
3、初始化静态构建的模块(MINIT)。
4、初始化共享模块(MINIT)。

3.2 ACTIVATION

1、初始化环境变量、变量。
2、激活静态构建的模块(RINIT) 。
3、激活共享模块(RINIT) 。

3.3 RUNTIME

1、编译和执行php.ini中auto_prepend_file选项指定的文件。
2、编译和执行所请求的文件。
3、编译和执行php.ini中auto_append_file选项指定的文件。

3.4 DEACTIVATION

1、调用用户指定的退出函数。
2、销毁对象实例。
3、停用模块(RSHUTDOWN)。
4、清空输出。
5、清理环境。
6、释放剩余的非持久内存。

3.5 SHUTDOWN

1、关闭启动的全部模块(MSHUTDOWN)。
2、关闭引擎。

标签分类:

相关阅读 更多 +
排行榜 更多 +
泡龙大闯关安卓版

泡龙大闯关安卓版

冒险解谜 下载
割草派对安卓版

割草派对安卓版

飞行射击 下载
堡垒攻防战安卓版

堡垒攻防战安卓版

飞行射击 下载