代码审计:常见INI配置

#0x00:php的配置文件

1.php.ini
在PHP启动时读取。对于服务器模块版本的PHP,仅在web服务器启动时读取一次,对于CGI和CLI版本,每次调用都会读取。

2…user.ini文件
自PHP 5.3.0起,PHP支持基于每个目录的.htaccess风格的INI文件。此类文件仅被CGI/FastCGI SAPI处理。此功能使得PECL的htscanner跨站作废。如果使用Apache,则用.htaccess文件有同样的效果,用户级别的配置文件。如果使用Apache,则用.htaccess文件有同样效果

#0x01: php相关语法

设置指令的格式如下:
directive = value
指令名(directive)是大小写敏感的!所以"foo=bar"不同于"FOO=bar"。
值(value)可以是:
1.用引号界定的字符串(如:“foo”)
2.一个数字(整数或浮点数,如:0, 1, 34, -1, 33.55)
3. 一个PHP常量(如:E_ALL, M_PI)
4. 一个INI常量(On, Off, none)
5. 一个表达式(如:E_ALL & ~E_NOTICE)

布尔标志用 On 表示打开,用 Off 表示关闭。

一个空字符串可以用在等号后不写任何东西表示,或者用 none 关键字:
foo =     ; 将foo设为空字符串
foo = none  ; 将foo设为空字符串
foo = “none” ; 将foo设为字符串’‘none’’

如果你在指令值中使用动态扩展(PHP扩展或Zend扩展)中的常量,那么你只能在加载这些动态扩展的指令行之后使用这些常量。
httpd.conf ;;
还可以在httpd.conf中覆盖php.ini的值,以进行更灵活的配置:
php_value name value ;设置非bool型的指令,将value设为none则清除先前的设定
php_flag name on|off ;仅用于设置bool型的指令
PHP常量(如E_ALL)仅能在php.ini中使用,在httpd.conf中必须使用相应的掩码值。
带"SYS"标志的指令只能在httpd.conf中的全局配置部分使用,
带"ini"标志的指令不能在httpd.conf中使用,它们仅能用于php.ini中。

#0x02:变量相关配置

关闭启用全局变量
register_globals = off
开启短标签
short_open_tag = on
这个设置决定是否允许PHP代码开始标志的缩写形式()。

#0x03:安全模式配置

sefe_mode = off
能够控制php中的一些函数,比如system()。默认关闭
PHP5.3.0起废弃并将自PHP5.4.0起移除

#0x04:上传文件以及上传权限配置
禁用类/函数
disable_classes = , disable_functions =

设置上传及最大上传文件大小
file_uploads = on
file_max_filesize = 8M

文件上传临时目录
upload_tmp_dir =
如果不设置,则采用系统临时目录(/tmp,C:\Windows\Temp)

用户访问目录限制
open_basedir = .:/tmp/

#0x03:错误信息相关配置
错误信息控制
display_error = On

设置错误信息报告级别
error_reporting = E_ALL

#0x04:错误日志相关配置
error_log=
错误日志的位置,必须对web用户可写入,如果不定义则默认写到web服务器的错误日志中去。
log_errors = on
log_errors_max_length = 1024

#0x06:魔术引导及远程文件
魔术引导(php5.3.0废弃php5.4.0起移除)
magic_quotes_gpc = On
magic_quotes_runtime = Off
所有单引号,双引号反斜杠和NULL被一个反斜杠自动转义
是否允许打开远程文件
alllow_url_fopen = on

是否允许包含远程文件
allow_url_include = off


参考资料:i春秋课程

你可能感兴趣的:(安全)