首先,要了解几个定义值,即PHP_INI_*常量的定义
常量 | 含义 |
---|
PHP_INI_USER | 该配置选项可在用户的PHP脚本或Windows注册表中设置 | PHP_INI_PERDIR | 该配置选项可在用户的PHP.htaccess或httpd.conf中设置 | PHP_INI_SYSYTEM | 该配置选项可在php.ini或hpptd.conf中设置 | PHP_INI_ALL | 该配置选项可在任何地方中设置 | php.ini only | 该配置选项仅可在php.ini中设置 |
然后,有几个会影响PHP脚本安全的配置列表以及核心配置选项。 1.register_globals(全局变量注册开关) 该选项值为on时,会直接把用户GET\POST等方式提交上来的参数注册成全局变量并初始化值为参数对应的值,使得提交参数可以直接在脚本中使用。 从PHP 5.3.0起废弃,PHP5.4.0中移除了该选项。 2.allow_url_include(是否包含远程文件) 了这个配置指令对PHP安全的影响不可小觑。该配置选项为ON的情况下,它可以直接包含远程文件。 3.magic_quotes_gpc(魔术引号自动过滤) 只要它被开启,在不存在编码或者其他特殊绕过的情况下,可以使很多漏洞无法被利用。 当该选项为on时,会自动在GET\POST\COOKIE变量中的单引号、双引号、反斜杠(\)以及空字符前加上反斜杠。 4.magic_quotes_runtime(魔术引号自动过滤) 它也是自动在单引号、双引号、反斜杠以及空字符前加上反斜杠。它跟magic_quotes_gpc的区别是,处理的对象不一样,magic_quotes_runtime只对从数据库或者文件中获取的数据进行过滤。 5.magic_quotes_sybase(魔术引号自动过滤) 该指令用于过滤特殊字符,当设置为on时,它会覆盖掉magic_quotes_gpc的配置。这个指令与gpc的共同点是处理的对象一致,即都对GET\POST\COOKIE进行处理。而它们的区别在于处理的方式不一样。magic_quotes_sybase仅仅是**转义了空字符和把单引号变成双引号。**与gpc相比,这个指令使用的更少。 6.safe_mode(安全模式) 安全模式是PHP内嵌的一种安全机制,当为on时,联动可以配置的指令有safe_mode_include_dir,safe_mode_exec_dir,safe_mode_allowed_env_vars,safe_mode_protected_env_vars.指令的配置范围是PHP_INI_SYSTEM. 这个配置会出现下面限制: (1)所有文件操作函数(例如unlink(),file(),include())等都会受到限制。 (2)通过函数popen(),system(),exec()等函数执行命令或程序会提示错误。
|