PHP_INI_*常量的定义
常量 | 含义 |
---|---|
PHP_INI_USER | 可在用户的PHP脚本或Windows注册表中设置 |
PHP_INI_PERDIR | 可在php.ini .htaccess或httpd.confg中设置 |
PHP_INI_SYSTEM | 可在php.ini或httpd.conf中设置 |
PHP_INI_ALL | 可在任何地方设置 |
php.ini only | 仅可在php.ini中设置 |
PHP核心配置详解
register_globals
- 介绍:当选项开启为on时,将GET、POST等方式提交上来的参数注册成全局变量。
- 存在:PHP5.3.0起被废弃,PHP5.4.0移除选项
allow_url_include
- 介绍:是否允许包含远程文件
- 存在:PHP5.2.0后默认为off
magic_quotes_gpc
- 介绍:魔术引号自动过滤GET、POST、COOKIE变量中的如单引号(‘),双引号(“),反斜杠(\),空字符(NULL)**前自动上反斜杠(\)**
- 存在:PHP5.4.0之后被取消
magic_quotes_runtime
- 介绍:魔术引号自动过滤,同magic_quotes_gpc但是作用不同,magic_quotes_runtime作用于从数据库和文件中获取的数据,因此二次注入比较常见
- 存在:PHP5.4之后被取消
- 受影响函数
magic_quotes_sybase
- 介绍:大体和magic_quotes_sybase相同,但是会覆盖掉magic_quotes_gpc,且仅仅转义空字符和把单引号(‘)**变成了双引号(“),因此用处没有magic_quotes_gpc**广
- 存在时间:PHP5.4.0后被移除
safe_mode
- 介绍:是PHP内置的安全机制,开启后,可以联动的指令有safe_mode_include_dir、safe_mode_exec_dir、safe_mode_allowed_env_vars、safe_mode_protected_env_vars
- 存在时间:PHP5.4.0之后移除
safe_mode_exec_dir
- 介绍:当开启后,执行popen、system、exec等执行命令的函数时需要在特定的目录
受影响函数:
open_basedir
- 介绍:用于限制PHP有权限访问的目录,设定成D:\phpstudy_pro\WWW\test的时候WWW目录下的文件都可访问到,设定成D:\phpstudy_pro\WWW\test\时,只能访问test目录下的文件
- 存在时间:目前依然在用,目前是PHP_INI_ALL,在PHP < 5.2.3 时是 PHP_INI_SYSTEM。
当设置成open_basedir=D:\phpstudy_pro\WWW\test\时,test目录下有flag.txt文件
disable_functions
- 介绍:禁用函数,使用逗号分割,例如:disable_functions=phpinfo,eval
- 存在时间:目前在用,配置范围为php.ini only
display_errors和error_reporting
- 介绍:用于错误显示,display_errors应在网站发布之后关闭以下是error_reporting的常量格式
特别的,error_reporting(0)关闭错误显示 - 存在时间:依然在用,配置范围PHP_INI_ALL
常用指令以及说明
php.ini的安全设置
safe_mode= On(用来限制文档的存取、限制环境变量的存取,控制外部程序的执行,PHP5.4.0以上被移除)
safe_model_allowed_env_vars = string,限制环境变量的存取,即PHP程序能改变环境变量的前缀,当选项值为空时,PHP可以改变任何环境变量
safe_mode_exec_dir=”E:\Phpstudy\WWW”,控制外部程序的执行
disable_functions,禁用函数,禁止一些敏感函数,要禁止dl函数,攻击者可以利用dl()函数加载自定义的php扩展来突破disable_function
com.allow_dcom= false,com组件,PHP设置在安全模式下(safe_mode),仍旧允许攻击者使用COM()函数来创建系统组件来执行任意命令
register_globals= Off,全局变量注册开关,PHP5.4.0移除
magic_quotes_gpc= On,相当于addslashes,PHP5.4移除
allow_url_include= Off,包含远程文件,注意变量是否可控, 从 PHP 7.4.0 开始被废弃。
allow_url_fopen= Off,允许本地PHP文件通过调用URL重写来打开和关闭写权限
expose_php= Off,防止通过http头部泄露的php版本信息
upload_tmp_dir = “E:\Phpstudy\WWW\temp\upload”,上传文件临时保存的目录
open_basedir= “E:\Phpstudy\WWW”,控制PHP脚本只能访问指定的目录
display_errors= Off,网站发布后建议关闭
error_reporting= 0,方便排错