常见的INI配置:
(php.ini user.ini)
PHP的配置-语法
设置指令的格式:
directive = value
指令名(directive)是大小写敏感的!所以”foo=bar”不同于”FOO=bar”。
值(value)可以是:
- 用引号界定的字符串(如:”foo”)
- 一个数字(整数或浮点数,如:0, 1, 34, -1, 33.55)
- 一个PHP常量(如:E_ALL, M_PI)
- 一个INI常量(On, Off, none)
- 一个表达式(如:E_ALL & ~E_NOTICE)
INI文件中的表达式仅使用:位运算符、逻辑非、圆括号:
| 位或
& 位与
~ 位非
! 逻辑非
布尔标志用 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中。
================================================
启用全局变量(容易导致变量覆盖):
register_globals = off
1.不方便阅读代码
2.变量之间互相覆盖,引起不必要的麻烦
3.安全问题,所以要设置为off。
短标签
short_open_tag = on
决定是否允许使用php代码开始标志的缩写形式().如果禁用了,必须使用php代码开始标志的完整形式().
也会影响到缩写形式<?,他和<? echo 等价 。
从php5.4起,<?= 总是可用的。
安全模式
safe_mode = off
控制一些php中的函数,比如system()
对一些函数进行了权限控制,不允许对某些关键性的文件的读取,比如/etc/passwd,默认php.ini是没有开启安全模式的
5.4后移除
安全模式下执行程序主目录
safe_mode_exec_dir = /var/www/html
这个目录可以执行
禁用类/函数
disable_classes = ,disable_functions = ,
disable_functions = opendir,readdir,scandir,fopen,unlink
设置上传及最大上传文件大小
file_uploads = on
upload_max_filesize=8M
文件上传临时目录
upload_tmp_dir =
上传临时文件保存的目录,需要可写,如果不设置,则采用系统临时目录。(/tmp、C:\Windows\temp)
用户访问目录限制
open_basedir = .:/tmp/
open_basedir能控制php脚本只能访问指定的目录,这样能够避免php脚本访问不应该访问的文件,一定程度上限制了phpshell的危害,
我们一般可以设置只能访问网站目录,表示允许访问当前目录(即php脚本文件所在之目录)和/tmp/目录,有效防止php木马跨站运行
print_r(scandir(dirname(FILE)));
print_r(scandir(dirname(FILE).”/../”));
错误控制信息
display_error =on
设置错误报告级别
error_reporting = E_All
错误日志
………………
魔术引号
php5.4.0移除
magic_quotes_gpc=on
magic_quotes_runtime=off
为GPC(Get/Post/Cookie)操作设置magic_quotes状态。当magic_quotes为on,所有的'(单引号)、”(双引号)、(反斜杠)
和NULL被一个反斜杠自动转义。
是否允许打开远程文件
allow_url_fopen = on
激活了URL形式的fopen封装协议使得可以访问URL对象例如文件。
是否允许包含远程文件
allow_url_include = off
本选项激活允许include,include_once,require,require_once等函数使用URL形式的fopen封装协议。
简单来说,可以包含远程文件。
转载请注明:Adminxe's Blog » PHP基础代码审计 1.1 常见的INI配置