PHP危险函数禁用深入详解

error_log()

功能描述:将错误信息发送到指定位置(文件)。 
安全备注:在某些版本的 PHP 中,可使用 error_log() 绕过 PHP safe mode, 执行任意命令。 
危险等级:低

phpinfo()

功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 
危险等级:中

scandir() 

功能描述:列出指定路径中的文件和目录。 
禁用建议:不建议禁用,因为thinkphp框架需要调用。
危险等级:中

syslog() 

功能描述:可调用 UNIX 系统的系统层 syslog() 函数。 
危险等级:中

readlink() 

功能描述:返回符号连接指向的目标文件内容。 
危险等级:中

stream_socket_server() 

功能描述:建立一个 Internet 或 UNIX 服务器连接。 
禁用建议:不建议禁用,workerman框架需要使用。
危险等级:中

passthru()  

功能描述:允许执行一个外部程序并回显输出,类似于 exec()。 
危险等级:高 

exec() 

功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。 
危险等级:高

system() 

功能描述:允许执行一个外部程序并回显输出,类似于 passthru()。 
危险等级:高

chroot() 

功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式 PHP 时才能工作,且该函数不适用于 Windows 系统。 
危险等级:高

chgrp() 

功能描述:改变文件或目录所属的用户组。 
危险等级:高

chown() 

功能描述:改变文件或目录的所有者。 
危险等级:高

shell_exec() 

功能描述:通过 Shell 执行命令,并将执行结果作为字符串返回。 
危险等级:高

proc_open() 

功能描述:执行一个命令并打开文件指针用于读取以及写入。 
危险等级:高

proc_get_status() 

功能描述:获取使用 proc_open() 所打开进程的信息。 
危险等级:高

ini_set() 

功能描述:可用于修改、设置 PHP 环境配置参数。

禁用建议:不建议禁用,因为很多程序需要使用 ,比如:

<?php
ini_set("error_reporting","E_ALL & ~E_NOTICE");//设置 PHP的报错级别并返回当前级别。
?>

危险等级:高

ini_alter() 

功能描述:是 ini_set() 函数的一个别名函数,功能与 ini_set() 相同。
危险等级:高

ini_restore() 

功能描述:可用于恢复 PHP 环境配置参数到其初始值。 
危险等级:高

dl() 

功能描述:在 PHP 进行运行过程当中(而非启动时)加载一个 PHP 外部模块。 
危险等级:高

pfsockopen() 

功能描述:建立一个 Internet 或 UNIX 域的 socket 持久连接。 
危险等级:高

symlink() 

功能描述:在 UNIX 系统中建立一个符号链接。 
危险等级:高

popen() 

功能描述:可通过 popen() 的参数传递一条命令,并对 popen() 所打开的文件进行执行。 
危险等级:高

putenv() 

功能描述:用于在 PHP 运行时改变系统字符集环境。在低于 5.2.6 版本的 PHP 中,可利用该函数 修改系统字符集环境后,利用 sendmail 指令发送特殊参数执行系统 SHELL 命令。 
危险等级:高

fsockopen()

功能描述:一个可以实现远程登录访问的函数,也容易被黑客利用进行PHPDDOS攻击。phpddos原理是向外发upd包,curl当然也可以,但默认情况下fsockopen可用,curl不默认加载。
危险等级:高

禁用方法:

打开php.ini文件, 查找到disable_functions,在等于号(=)后面添加需禁用的函数名,如下:

syslog,readlink,passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,symlink,popen,putenv,fsocket,fsockopen

disable_functions =syslog,readlink,passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,symlink,popen,putenv,fsocket,fsockopen

到此这篇关于PHP危险函数禁用深入详解的文章就介绍到这了,更多相关PHP危险函数禁用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • php用户名的密码加密更安全的方法

    php中对用户密码的加密主要有两种方法,一种是利用md5加密,另一种是利用password_hash加密,两种方法中后一种的方法比前一种方法安全很多,几乎不能被黑客破解,但php版本必须在5.5以上.下面介绍两种加密方法如何加密才更安全. 新建一个PHP文件,命名为test.php. 利用md5加密.为了更加安全,可以给用户密码加上随机字符串再使用md5加密,产生随机字符串的函数如下: 假如用户的密码$password为123456,则可以把123456加上随机字符串传入md5函数中进行加密.随

  • Linux下PHP+Apache的26个必知的安全设置

    PHP是一种开源服务器端脚本语言,应用很广泛.Apache web服务器提供了这种便利:通过HTTP或HTTPS协议,访问文件和内容.配置不当的服务器端脚本语言会带来各种各样的问题.所以,使用php时要小心.以下是Linux下PHP+Apache的26个PHP程序员必知的安全方面的设置 为PHP安全提示而提供的示例环境 文件根目录(DocumentRoot):/var/www/html 默认的Web服务器:Apache(可以使用Lighttpd或Nginx来取代Apache) 默认的PHP配置文

  • PHP开发api接口安全验证操作实例详解

    本文实例讲述了PHP开发api接口安全验证操作.分享给大家供大家参考,具体如下: php的api接口 在PHP的开发工作中,对API接口开发不会陌生,后端人员写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json, 在这个过程中,服务器并不知道,请求的来源是什么,有可能是别人非法调用我们的接口,获取数据,因此就要使用安全验证来屏蔽某些调用. 验证原理示意图 原理 从图中可以看得很清楚,前台想要调用接口,需要使用几个参数生成签名. ● 时间戳:当前时间 ●

  • PHP安全配置优化详解

    由于脚本语言和早期版本设计的诸多原因,php项目存在不少安全隐患.从配置选项来看,可以做如下的优化. 1.屏蔽PHP错误输出. 在/etc/php.ini(默认配置文件位置),将如下配置值改为Off display_errors=Off 不要将错误堆栈信息直接输出到网页上,防止黑客加以利用相关信息. 正确的做法是: 把错误日志写到日志文件中,方便排查问题. 2.屏蔽PHP版本. 默认情况下PHP版本会被显示在返回头里,如: Response Headers X-powered-by: PHP/7

  • 实例分析10个PHP常见安全问题

    相对于其他几种语言来说, PHP 在 web 建站方面有更大的优势,即使是新手,也能很容易搭建一个网站出来.但这种优势也容易带来一些负面影响,因为很多的 PHP 教程没有涉及到安全方面的知识. 本文分为几部分,每部分会涵盖不同的安全威胁和应对策略.但是,这并不是说你做到这几点以后,就一定能避免你的网站出现任何问题.如果你想提高你的网站安全性的话,你应该继续通过阅读书籍或者文章,来研究如何提高你的网站安全性 出于演示需要,代码可能不是很完美.日常开发过程中,很多代码都包含在了框架跟各种库里面.作为

  • php解决安全问题的方法实例

    PHP安全配置 (1) 打开php的安全模式 php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,但是默认的php.ini是没有打开安全模式的,我们把它打开: safe_mode = on (2) 用户组安全 当safe_mode打开时,safe_mode_gid被关闭,那么php脚本能够对文件进行访问,而且相同组的用户也能够对文件进行访问. 建议设置为:

  • PHP危险函数禁用深入详解

    error_log() 功能描述:将错误信息发送到指定位置(文件).  安全备注:在某些版本的 PHP 中,可使用 error_log() 绕过 PHP safe mode, 执行任意命令.  危险等级:低 phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息.  危险等级:中 scandir()  功能描述:列出指定路径中的文件和目录.  禁用建议:不建议禁用,因为thinkphp框架需要调用. 危险等级:中 syslog()  功能描述:可调用 UNIX 系

  • PHP中断言函数的使用详解

    原来一直以为断言相关的函数是 PHPUnit 这些单元测试组件提供的,在阅读手册后才发现,这个 assert() 断言函数是 PHP 本身就自带的一个函数.也就是说,我们在代码中进行简单的测试的时候是不需要完全引入整个单元测试组件的. assert() 断言函数 assert(1==1); assert(1==2); // assert.exception = 0 时,Warning: assert(): assert(1 == 2) // assert.exception = 1 时,Fata

  • C++ assert()函数用法案例详解

    1. 简介 assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行. 原型定义: #include <assert.h> void assert( int expression ); assert的作用是先计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行.请看下面的程序清单badptr.c: #include <stdio.h> #incl

  • 基于C++ bitset常用函数及运算符(详解)

    C++ bitset--高端压位卡常题必备STL ------------------------------------------------------------ 以下内容翻译自cplusplus.com,极大地锻炼了我的英语能力. bitset存储二进制数位. bitset就像一个bool类型的数组一样,但是有空间优化--bitset中的一个元素一般只占1 bit,相当于一个char元素所占空间的八分之一. bitset中的每个元素都能单独被访问,例如对于一个叫做foo的bitset,

  • C++ 中const对象与const成员函数的实例详解

    C++ 中const对象与const成员函数的实例详解 const对象只能调用const成员函数: #include<iostream> using namespace std; class A { public: void fun()const { cout<<"const 成员函数!"<<endl; } void fun() { cout<<"非const成员函数 !"<<endl; } }; int

  • web开发之对比时间大小的工具函数的实例详解

    web开发之对比时间大小的工具函数的实例详解 js时间大小比较,格式yyyy-MM-dd hh:mm:ss 把时间比较封装成一个工具函数: /** * 比较两个时间的大小 * 时间格式:yyyy-MM-dd hh:mm:ss * @param {Object} beginTime 开始时间 * @param {Object} endTime 结束时间 */ var getDataLarge = function(beginTimeString,endTimeString){ var b = be

  • Oracle中的INSTR,NVL和SUBSTR函数的用法详解

    Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号) 返回找到的位置,如果找不到则返回0. 例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 在字符串中查找'OR',从第三个字符位置开始查找"OR",取第三个字后第2个匹配项的位置. 默认查找顺序为从左到右.当起始位置为负数的时候,从右边开始查找. 所以SELECT I

  • Java回调函数实例代码详解

    首先说说什么叫回调函数? 在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就 称为回调.在调用接口时,需要严格的按照定义的参数和方法调用,并且需要处理函数的异步,否则会导致程序的崩溃. 这样的解释似乎还是比较难懂,这里举个简 单的例子: 程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序.程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法.目的达到

  • python里使用正则的findall函数的实例详解

    python里使用正则的findall函数的实例详解 在前面学习了正则的search()函数,这个函数可以找到一个匹配的字符串返回,但是想找到所有匹配的字符串返回,怎么办呢?其实得使用findall()函数.如下例子: #python 3. 6 #蔡军生 #http://blog.csdn.net/caimouse/article/details/51749579 # import re text = 'abbaaabbbbaaaaa' pattern = 'ab' for match in r

  • PHP 传输会话curl函数的实例详解

    PHP 传输会话curl函数的实例详解 前言: 接手公司项目PC端负责人的重担,责任担当重大:从需求分析,画流程图,建表,编码,测试修bug,上线维护等我一个光杆司令一人完成(当然还有一个技术不错的前端配合,感谢主管的帮助),虽然累点加班多点但感觉还行吧,公司都是一个鸟样. 闲话不多说了,因为项目中经常需要调取java那边的接口,既然涉及到请求接口那就有了http的请求方式,PHP常见的是GET/POST两种当然还有其他的比如put等,java那边经常用到GET/POST/PUT/DELETE等

随机推荐