###1.3 php.ini配置设计安全项

1、register_globals(全局变量注册开关)

该选项在设置为on的情况下,会直接把用户get、post等方式提交上来的参数注册成全局变量并初始化值为参数对应的值,使得提交参数可以直接在脚本中使用。从PHP5.3起被弃用,在5.4中移除了该选项

2、allow_url_include(是否允许包含远程文件)

allow_url_include在PHP5.2后默认设置为off,类似函数allow_url_include

3、magic_quotes_gpc(魔术引号自动过滤)

magic_quotes_gpc 在安全方面做了很大的贡献,当选项设置为on时,会自动在get、post、cookie变量中的单引号、双引号、反斜杠及空字符(null)的前面加上反斜杠(\),但是在PHP5中并不会过滤$SERVER的变量,导致很多类似client-ip、referer一类的漏洞能够利用。在PHP5.3之后不推荐使用magicquotes_gpc。PHP5.4直接取消。

4、magic_quotes_runtime(魔术引号自动过滤)

自动转义单引号、双引号、反斜杠及空字符,在前面加上反斜杠。他跟magic_quotes_gpc的区别是,处理的对象不一样,它只对数据库或者文件中获取的数据进行过滤。

5、magic_quotes_sybase(魔术引号自动过滤)

此函数会覆盖magic_quotes_gpc的配置,它仅仅转义了空字符和把单引号变成双引号。在PHP5.4.0中移除了该选项

6、safe_mode(安全模式)

当safe_mode=on时,联动可以配置的指令有safe_mode_include_dir、safe_mode_exec_dir、safe_mode_allowed_env_vars、safe_mode_protected_env_vars。这些PHP5.4之后被取消
这些配置会出现下面限制:
1)所有文件操作函数(例如:unlink()、file()、include())等
2)通过函数popen()、system()以及exec()等函数执行命令或者程序会提示错误。如果我们需要使用一些外部脚本,可以把它们集中在放在一个目录下,然后使用safe_mode_exec_dir指令指向脚本的目录
下面是启动safe_mode指令时受影响的函数、变量及配置指令的完整列表:
apache_request_headers()、ackticks()、hdir()、hgrp()、chmode()、chown()、copy()、dbase_open()、dbmopen()、dl()、exec()、filepro()、filepro_retrieve()、ilepro_rowcount()、fopen()、header()、highlight_file()、ifx_、ingres_、link()、mail()、max_execution_time()、mkdir()、move_uploaded_file()、mysql_*、parse_ini_file()、passthru()、pg_lo_import()、popen()、posix_mkfifo()、putenv()、rename()、zmdir()、set_time_limit()、shell_exec()、show_source()、symlink()、system()、touch()。

7 open_basedir PHP可访问目录

open_basedir指令用来限制PHP只能访问哪些目录,通常我们只需要设置web文件目录即可,如果需要加载外部脚本,也需要把脚本所在目录路径加入到open_basedir指令中,多个目录以分号(;)分隔。注意请用斜线结束路径名。例如设置成:open_basedir=/www/a/.

8 disable_functions(禁用函数)

在正式的生产环境中,为了更安全地运行PHP,也可以使用disable_functions指令来禁止一些敏感函数的使用。当你想用本指令禁止一些危险函数时,切记要把dl()函数也加到禁止列表,因为攻击者可以利用dl()函数来加载自动以的PHP扩展以突破disable_functions指令的限制。
本指令配置范围为php.ini only。配置禁用函数时使用逗号分隔函数名,例如:disable_functions=phpinfo,eval,passthru,exec,system

9 display_errors和error_reporting错误显示

display_errors表明是否显示PHP脚本内部错误的选项,在调试PHP的时候,通常都把PHP错误信息显示打开,但在生产环境中,建议关闭PHP错误回显,即设置display_errror=off,以避免带来一些安全隐患。在设置display_errors=on时,还可以配置的一个指令是error_reporting,这个选项用来配置错误显示的级别,可使用数字也可以用内置常量配置,数字格式与常量格式的详细信息如下表所示.

这两个指令的配置范围都是php_ini_all。
会影响到安全的指令大致就介绍到这里,下表为一些常用指令以及对应的说明。


作者:天下兵马大都督  创建时间:2022-05-19 09:36
最后编辑:skad  更新时间:2023-04-12 16:17