PHP配置文件php.ini
1、register_globals 注册全局变量
作用:
register_globals = on 时,GET,POST请求参数可以作为全局变量作用到整个系统
Php version <=4.2.3 存在
Php version 5.3.0 废弃
Php version 5.4.0 移除
演示:
1.php代码
2、allow_url_include 包含远程文件
作用:
allow_url_include = on 时,可以直接包含远程文件,运行远程部署服务器恶意代码和脚本
php version 5.2.0后默认为off
演示:
2.php代码
test.txt内容是调用phpinfo()函数
此时allow_url_include = off,调用http本地引用也会报错
设置 allow_url_include = on
此时调用远程机器文件就不会报错,以baidu.com/robots.txt文件为例
3、magic_quotes_gpc 魔术引号过滤
作用:
自动过滤GET,POST,Cookie中的英文单引号’,双引号”,反斜杠\,空字符NULL,转义其字符在前边加上个反斜杠\
但是php 5中不会过滤$_SERVER变量,造成client-ip,referer等漏洞利用
php version 5.3 不推荐使用
php version 5.4 取消
演示:
3.php代码
gpc = off,参数没有转义
gpc = on,参数被转义
4、magic_quotes_runtime 魔术引号过滤
作用:
跟gpc类似,区别是对数据库或文件中参数进行转义,可以避免污染数据触发攻击
php version 5.4 取消
演示:
4.txt文件内容
runtime = off,没有转义
runtime = on,开启转义
5、magic_quotes_sybase 魔术引号过滤
作用:
跟gpc类似,区别在转义单引号时变为两个单引号
php version 5.4 取消
演示:
5.php
sybase发挥作用需要gpc和sybase同时为on,单引号被过滤为两个单引号
如果gpc = off,则不会产生过滤效果
6、safe_mode 安全模式
作用:
(1)文件操作,如file(),include(),unlink()等,引用外部文件,使用safe_mode_include_dir配置可包含路径
(2)执行函数,如popen(),system(),exec()等,引用外部脚本,使用safe_mode_exec_dir配置脚本目录
演示:
6.php源码以及执行效果,此时safe_mode = off
当safe_mode = on ,执行会出错
7、open_basedir 可访问目录
作用:
规定可以访问的目录路径,使用分号;连接
例如:open_basedir = /www/a;/www/b;
注意,路径/www/a是前缀匹配,则 /www/a/和/www/ab/都是正确匹配的,可以改为 /www/a/来明确某个目录
8、disable_functions 禁用函数
作用:
禁止某些敏感函数执行
演示:
disable_functions = system,phpinfo,eval
9、display_errors error_reporting 错误回显
作用:
设定PHP错误回显级别,方便调试,上线时尽量关闭