PHP函数安全指南:phpinfo()、passthru()、exec()、system()和chroot()的危险等级解析
phpinfo()

功能说明:输出PHP环境信息及相关模块、WEB环境等信息。
危险等级:中
通路()
函数描述:允许执行外部程序并回显输出,类似于 exec()。
危险等级:高
执行()
功能描述:允许执行外部程序(如UNIX Shell或CMD命令等)。
危险等级:高
系统()
函数描述:允许执行外部程序并回显输出,类似于 passthru()。
危险等级:高
chroot()
功能说明:可以更改当前PHP进程的工作根目录,前提是系统支持CLI模式
它仅适用于 PHP,并且此功能在 Windows 系统上不可用。
危险等级:高
扫描目录()
功能描述:列出指定路径下的文件和目录。
危险等级:中
chgrp()
功能描述:更改文件或目录所属的用户组。
危险等级:高
chown()
功能描述:改变文件或目录的所有者。
危险等级:高
shell_exec()
功能描述:通过Shell执行命令,并将执行结果以字符串形式返回。
危险等级:高
proc_open()
功能说明:执行命令,打开文件指针进行读写。
危险等级:高
proc_get_status()
函数说明:获取使用proc_open()打开的进程的信息。
危险等级:高
错误日志()
功能说明:发送错误信息到指定位置(文件)。
安全说明:在某些版本的 PHP 中,error_log() 可用于绕过 PHP 安全模式。
执行任意命令。
危险等级:低
ini_alter()
函数说明:是ini_set()函数的别名函数,与ini_set()功能相同。
详细信息请参见 ini_set()。
危险等级:高
ini_set()
功能说明:可用于修改和设置PHP环境配置参数。
危险等级:高
ini_restore()
功能说明:可用于将PHP环境配置参数恢复为初始值。
危险等级:高
dl()
功能描述:在PHP运行时(不是启动时)加载PHP外部模块。
危险等级:高
pfsockopen()
功能描述:在Internet或UNIX域中建立套接字持久连接。
危险等级:高
系统日志()
函数说明:可以调用UNIX系统的系统层syslog()函数。
危险等级:中
读取链接()
功能说明:返回符号链接指向的目标文件的内容。
危险等级:中
符号链接()
功能描述:在UNIX系统中创建符号链接。
危险等级:高
波彭()
功能说明:可以通过popen()的参数传递命令,并在popen()打开的文件上执行命令。
危险等级:高
流套接字服务器()
功能描述:建立Internet或UNIX服务器连接。
危险等级:中
putenv()
功能说明:用于改变PHP运行时的系统字符集环境。 PHP 5.2.6以下版本可以使用该函数
修改系统字符集环境后,使用sendmail命令发送特殊参数来执行系统SHELL命令。
危险等级:高
以下是禁用它的方法:
打开/etc/php.ini文件,
找到disable_functions,添加要禁用的函数名称,如下:
phpinfo、eval、passthru、exec、系统、chroot、scandir、chgrp、chown、shell_exec、proc_open、proc_get_status、ini_alter、ini_alter、ini_restore、dl、pfsockopen、openlog、syslog、readlink、symlink、popepassthru、stream_socket_server、fsocket、fsockopen