浅读php核心配置

PHP配置文件指令很多,这里就对一些会影响PHP脚本安全的核心配置进行简要学习与记录。

0X1 register_globals(全局变量注册开关)

>状态为on时,会将用户提交的参数注册成为全局变量并初始化值为参数对应的值。
>PHP版本小于4.2.3时设置为PHP_INI_ALL。
>在PHP 5.4.0移除了该选项。

设置为on且PHP版本小于5.4.0时,测试如下:

0X2 allow_url_include(是否允许包含远程文件)

>状态为on时,可直接包含远程文件,当存在include($var)且$var可控的情况下,通过$var可执行PHP代码。
>在PHP 5.2.0后默认为off,范围是PHP_INI_ALL。

设置为on时,测试如下:(教训:每次修改配置后要重启一次服务)

0X3 magic_quotes_gpc(魔术引号自动过滤)

>状态为on时,会自动在GET,POST,COOKIE变量中的单引号,双引号,反斜杠,空字符(NULL)的前面加上反斜杠。
>在PHP 5中不会过滤$_SERVER变量。
>在PHP 5.4中被取消。
>PHP版本小于4.2.3,配置范围是PHP_INI_ALL。
>PHP版本大于4.2.3,配置范围是PHP_INI_PERDIR。

测试如下:

0X4 magic_quotes_runtime(魔术引号自动过滤)

>数据库或文件中获取的数据对单引号,双引号,反斜杠,空字符(NULL)的前面加上反斜杠。
>在PHP 5.4中被取消,配置范围是PHP_INI_ALL。

测试如下:

ini_set 为一个配置选项设置值

0X5 magic_quotes_sybase(魔术引号自动过滤)

>转义空字符和把单引号变成双引号。
>作用对象与magic_quotes_gpc作用对象一致。
>设置为on时,会覆盖magic_quotes_gpc的配置,能无视magic_quotes_gpc的on。
>在PHP 5.4中被取消,配置范围是PHP_INI_ALL。

测试如下:

0X6 safe_mode(安全模式)

>安全模式是PHP内嵌的一种安全机制,配置范围是PHP_INI_SYSTEM,在PHP 5.4中被取消。
>>1)所有文件操作函数会受到限制(unlink() file() include())。
>>1)通过函数popen() system() exec()等函数执行命令或程序时会提示错误。

0X7 open_basedir(PHP 可访问目录)

>目录访问限制,将访问仅限制在指定的目录内,用斜线结束路径名,因为限制实际上针对的是目录名的前缀。
>在版本小于5.2.3时,配置范围时PHP_INI_SYSTEM,大于5.2.3时是PHP_INI_ALL。

0X8 disable_functions(禁用函数)

>要禁止一些危险函数时,应把dl()函数也添加刀禁止列表。
>配置禁用函数时以逗号分割。
>配置范围:php.ini only。

0X9 display_errors,error_reporting(错误显示)

>display_errors显示php脚本内部错误,生产环境中建议关闭。
>error_reporting配置错误显示级别。
>配置范围:PHP_INI_ALL。

你可能感兴趣的:(代码审计)