PHP采集利器snoopy应用详解

Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。Snoopy正确运行需要你的服务器的PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),基本的LAMP服务都支持。

一、Snoopy的一些特点:

1.抓取网页的内容 fetch

2.抓取网页的文本内容 (去除HTML标签) fetchtext

3.抓取网页的链接,表单 fetchlinks fetchform

4.支持代理主机

5.支持基本的用户名/密码验证

6.支持设置user_agent, referer(来路), cookies和header content(头文件)

7.支持浏览器重定向,并能控制重定向深度

8.能把网页中的链接扩展成高质量的url(默认)

9.提交数据并且获取返回值

10.支持跟踪HTML框架

11.支持重定向的时候传递cookies,要求php4以上就可以了,由于本身是php一个类,无需扩支持,服务器不支持curl时候的最好选择。

二、类方法:

fetch($URI)
———–

这是为了抓取网页的内容而使用的方法。$URI参数是被抓取网页的URL地址。抓取的结果被存储在 $this->results 中。如果你正在抓取的是一个框架,Snoopy将会将每个框架追踪后存入数组中,然后存入 $this->results。

fetchtext($URI)
—————

本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中的文字内容。

fetchform($URI)
—————

本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中表单内容(form)。

fetchlinks($URI)
—————-

本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。
默认情况下,相对链接将自动补全,转换成完整的URL。

submit($URI,$formvars)
———————-

本方法向$URL指定的链接地址发送确认表单。$formvars是一个存储表单参数的数组。

submittext($URI,$formvars)
————————–

本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回登陆后网页中的文字内容。

submitlinks($URI)
—————-

本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。
默认情况下,相对链接将自动补全,转换成完整的URL。

三、类属性: (缺省值在括号里)

$host 连接的主机
$port 连接的端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 来路信息,如果有的话
$cookies cookies, 如果有的话
$rawheaders 其他的头信息, 如果有的话
$maxredirs 最大重定向次数, 0=不允许 (5)
$offsiteok whether or not to allow redirects off-site. (true)
$expandlinks 是否将链接都补全为完整地址 (true)
$user 认证用户名, 如果有的话
$pass 认证用户名, 如果有的话
$accept http 接受类型 (image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)
$error 哪里报错, 如果有的话
$response_code 从服务器返回的响应代码
$headers 从服务器返回的头信息
$maxlength 最长返回数据长度
$read_timeout 读取操作超时 (requires PHP 4 Beta 4+)
设置为0为没有超时
$timed_out 如果一次读取操作超时了,本属性返回 true (requires PHP 4 Beta 4+)
$maxframes 允许追踪的框架最大数量
$status 抓取的http的状态
$temp_dir 网页服务器能够写入的临时文件目录 (/tmp)
$curl_path cURL binary 的目录, 如果没有cURL binary就设置为 false

四、以下是demo

include “Snoopy.class.php”;
$snoopy = new Snoopy;

$snoopy->proxy_host = “www.baidu.com“;
$snoopy->proxy_port = “8080”;

$snoopy->agent = “(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)”;
$snoopy->referer = “http://www.baidu.com/“;

$snoopy->cookies[“SessionID”] = 238472834723489l;
$snoopy->cookies[“favoriteColor”] = “RED”;

$snoopy->rawheaders[“Pragma”] = “no-cache”;

$snoopy->maxredirs = 2;
$snoopy->offsiteok = false;
$snoopy->expandlinks = false;

$snoopy->user = “joe”;
$snoopy->pass = “bloe”;

if($snoopy->fetchtext(“http://www.baidu.com“))
{
echo ” <PRE>”.htmlspecialchars($snoopy->results).” </PRE>/n”; <BR>
} <BR>
else <BR>
echo “error fetching document: “.$snoopy->error.”/n”;

snoopy采集phpchina示例
<?php
//采集phpchina
set_time_limit(0);
require_once(“Snoopy.class.php”);
$snoopy=new Snoopy();
//登陆论坛
$submit_url = “http://www.phpchina.com/bbs/logging.php?action=login“;
$submit_vars[“loginmode”] = “normal”;
$submit_vars[“styleid”] = “1”;
$submit_vars[“cookietime”] = “315360000”;
$submit_vars[“loginfield”] = “username”;
$submit_vars[“username”] = “***”; //你的用户名
$submit_vars[“password”] = “*****”; //你的密码
$submit_vars[“questionid”] = “0”;
$submit_vars[“answer”] = “”;
$submit_vars[“loginsubmit”] = “提 交”;
$snoopy->submit($submit_url,$submit_vars);
if ($snoopy->results)
{
//获取连接地址
$snoopy->fetchlinks(“http://www.phpchina.com/bbs“);
$url=array();
$url=$snoopy->results;
//print_r($url);
foreach ($url as $key=>$value)
{
//匹配http://www.phpchina.com/bbs/forumdisplay.php?fid=156&sid=VfcqTR地址即论坛板块地址
if (!preg_match(“/^(http:////www/.phpchina/.com//bbs//forumdisplay/.php/?fid=)[0-9]*&sid=[a-zA-Z]{6}/i”,$value))
{
unset($url[$key]);
}
}
//print_r($url);
//获取到板块数组$url,循环访问,此处获取第一个模块第一页的数据
$i=0;
foreach ($url as $key=>$value)
{
if ($i>=1)
{
//测试限制
break;
}
else
{
//访问该模块,提取帖子的连接地址,正式访问里需要提取帖子分页的数据,然后根据分页数据提取帖子数据
$snoopy=new Snoopy();
$snoopy->fetchlinks($value);
$tie=array();
$tie[$i]=$snoopy->results;
//print_r($tie);
//转换数组
foreach ($tie[$i] as $key=>$value)
{
//匹配http://www.phpchina.com/bbs/viewthread.php?tid=68127&amp;extra=page%3D1&amp;page=1&sid=iBLZfK
if (!preg_match(“/^(http:////www/.phpchina/.com//bbs//viewthread/.php/?tid=)[0-9]*&amp;extra=page/%3D1&amp;page=[0-9]*&sid=[a-zA-Z]{6}/i”,$value))
{
unset($tie[$i][$key]);
}
}
//print_r($tie[$i]);
//归类数组,将同一个帖子不同页面的内容放一个数组里
$left=”;//连接左边公用地址
$j=0;
$page=array();
foreach ($tie[$i] as $key=>$value)
{
$left=substr($value,0,52);
$m=0;
foreach ($tie[$i] as $pkey=>$pvalue)
{
//重组数组
if (substr($pvalue,0,52)==$left)
{
$page[$j][$m]=$pvalue;
$m++;
}
}
$j++;
}
//去除重复项开始
//$page=array_unique($page);只能用于一维数组
$paget[0]=$page[0];
$nums=count($page);
for ($n=1;$n <$nums;$n++)
{
$paget[$n]=array_diff($page[$n],$page[$n-1]);
}
//去除多维数组重复值结束
//去除数组空值
unset($page);
$page=array();//重新定义page数组
$page=array_filter($paget);
//print_r($page);
$u=0;
$title=array();
$content=array();
$temp=”;
$tt=array();
foreach ($page as $key=>$value)
{
//外围循环,针对一个帖子
if (is_array($value))
{
foreach ($value as $k1=>$v1)
{
//页内循环,针对一个帖子的N页
$snoopy=new Snoopy();
$snoopy->fetch($v1);
$temp=$snoopy->results;
//读取标题
if (!preg_match_all(“/ <h2>(.*) <//h2>/i”,$temp,$tt))
{
echo “no title”;
exit;
}
else
{
$title[$u]=$tt[1][1];
}
unset($tt);
//读取内容
if (!preg_match_all(“/ <div id=/”postmessage_[0-9]{1,8}/” class=/”t_msgfont/”>(.*) <//div>/i”,$temp,$tt))
{
print_r($tt);
echo “no content1”;
exit;
}
else
{
foreach ($tt[1] as $c=>$c2)
{
$content[$u].=$c2;
}
}
}
}
else
{
//直接取页内容
$snoopy=new Snoopy();
$snoopy->fetch($value);
$temp=$snoopy->results;
//读取标题
if (!preg_match_all(“/ <h2>(.*) <//h2>/i”,$temp,$tt))
{
echo “no title”;
exit;
}
else
{
$title[$u]=$tt[1][1];
}
unset($tt);
//读取内容
if (!preg_match_all(“/ <div id=/”postmessage_[0-9]*/” class=/”t_msgfont/”>(.*) <//div>/i”,$temp,$tt))
{
echo “no content2”;
exit;
}
else
{
foreach ($tt[1] as $c=>$c2)
{
$content[$u].=$c2;
}
}
}
$u++;
}
print_r($content);
}
$i++;
}
}
else
{
echo “login failed”;
exit;
}
?>

snoopy.class.php php模拟登陆

官方网站http://snoopy.sourceforge.net/

下面是它的一些特征:

1、方便抓取网页的内容

2、方便抓取网页的文字(去掉HTML代码)

3、方便抓取网页的链接

4、支持代理主机

5、支持基本的用户/密码认证模式

6、支持自定义用户agent,referer,cookies和header内容

7、支持浏览器转向,并能控制转向深度

8、能把网页中的链接扩展成高质量的url(默认)

9、方便提交数据并且获取返回值

10、支持跟踪HTML框架(v0.92增加)

11、支持再转向的时候传递cookies

下面是简单的例子,比如说我们抓取我的blog的文字

 

  1. <?
  2. include “Snoopy.class.php”;
  3. $snoopy = new Snoopy;
  4. $snoopy->fetchtext(“http://www.phpobject.net/blog”);
  5. echo $snoopy->results;
  6. ?>
  7. ^_^,不错把,在比如抓取链接
  8. <?
  9. include “Snoopy.class.php”;
  10. $snoopy = new Snoopy;
  11. $snoopy->fetchlinks(“http://www.phpobject.net/blog”);
  12. print_r($snoopy->results);
  13. ?>
  14. --------------------
  15. <?phpinclude(“snoopy.class.php”);
  16. $snoopy = new Snoopy;
  17. // need an proxy?://
  18. $snoopy->proxy_host = “my.proxy.host”;
  19. $snoopy->proxy_port = “8080”;
  20. // set browser and referer:
  21. $snoopy->agent = “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)”;
  22. $snoopy->referer = “http://www.jonasjohn.de/”;
  23. // set some cookies:
  24. $snoopy->cookies[“SessionID”] = ‘238472834723489’;
  25. $snoopy->cookies[“favoriteColor”] = “blue”;
  26. // set an raw-header:
  27. $snoopy->rawheaders[“Pragma”] = “no-cache”;
  28. // set some internal variables:
  29. $snoopy->maxredirs = 2;
  30. $snoopy->offsiteok = false;
  31. $snoopy->expandlinks = false;
  32. // set username and password (optional)//
  33. $snoopy->user = “joe”;
  34. snoopy->pass = “bloe”;
  35. // fetch the text of the website www.google.com:
  36. if($snoopy->fetchtext(“http://www.google.com”))
  37. {     // other methods: fetch, fetchform, fetchlinks, submittext and submitlinks
  38.         // response code:    print “response code: “.$snoopy->response_code.”<br/>\n”;
  39.         // print the headers:        print “<b>Headers:</b><br/>”;
  40.     while(list($key,$val) = each($snoopy->headers))
  41.     {
  42.        print $key.”: “.$val.”<br/>\n”;
  43.     }
  44.      print “<br/>\n”;
  45.         // print the texts of the website:    print “<pre>”.htmlspecialchars($snoopy->results).”</pre>\n”;
  46.     }
  47.     else
  48.      {    print “Snoopy: error while fetching document: “.$snoopy->error.”\n”;
  49. }
  50. ?>

--------------------------------

首先,我们要获取到登陆需要发送什么字段,目标地址是什么。这里我们使用snoopy的fetchform来实现。

 

  1. <?
  2. include “Snoopy.class.php”;
  3. $snoopy = new Snoopy;
  4. $snoopy->fetchform(“http://www.phpx.com/happy/logging.php?action=login”);
  5. print $snoopy->results;
  6. ?>

当然你也可以直接查看http://www.phpx.com/happy/…的源代码来实现,不过这样更加方便把。这里,我们获取到目标和提交的数据,下一步就可以实现模拟登陆了。代码如下:

  1. <?
  2. include “Snoopy.class.php”;
  3. $snoopy = new Snoopy;
  4. $submit_url = “http://www.phpx.com/happy/logging.php?action=login”;
  5.      $submit_vars[“loginmode”] = “normal”;
  6.      $submit_vars[“styleid”] = “1”;
  7.      $submit_vars[“cookietime”] = “315360000”;
  8.      $submit_vars[“loginfield”] = “username”;
  9.      $submit_vars[“username”] = “********”; //你的用户名
  10.      $submit_vars[“password”] = “*******”;   //你的密码
  11.      $submit_vars[“questionid”] = “0”;
  12.      $submit_vars[“answer”] = “”;
  13.      $submit_vars[“loginsubmit”] = “提 &nbsp; 交”;
  14.      $snoopy->submit($submit_url,$submit_vars);
  15.      print $snoopy->results;
  16. ?>

PHP重要的安全更新:5.4.3 和 5.3.13

PHP 5.4.3/5.3.13紧急发布。2012-05-08 上个版本是2012-05-04的5.4.2/5.3.12修正CGI 相关漏洞,请尽快升级,mod_php 和php-fpm并不受影响。

Version 5.4.3

08-May-2012

  • Fixed bug #61807

    Buffer Overflow in apache_request_headers, CVE-2012-2329.

  • Fixed bug #61910 Improve fix for PHP-CGI query string parameter vulnerability, CVE-2012-2311.

Version 5.3.13

08-May-2012

  • Fixed bug #61910 Improve fix for PHP-CGI query string parameter vulnerability, CVE-2012-2311.

下载:http://cn.php.net/distributions/php-5.4.3.tar.bz2

http://cn.php.net/distributions/php-5.3.13.tar.bz2

LNMP 一键安装 Linux Nginx MySQL PHP

LNMP 官方网站:http://lnmp.org/

安装

 

系统需求:

  • 需要2 GB硬盘剩余空间
  • 128M以上内存,OpenVZ的建议192MB以上(小内存请勿使用64位系统)
  • Linux下区分大小写,输入命令时请注意!

 

安装步骤:

1、使用putty或类似的SSH工具登陆;
登陆后运行:screen -S lnmp
如果提示screen命令不存在可以执行:yum install screen 或 apt-get install screen安装,详细的screen教程点击这里

2、下载LNMP一键安装包:
您可以选择使用下载版(推荐国外或者美国VPS使用)或者完整版(推荐国内VPS使用)
如需下载版执行命令:wget -c http://soft.vpser.net/lnmp/lnmp0.9.tar.gz
如需完整版执行命令:wget -c http://soft.vpser.net/lnmp/lnmp0.9-full.tar.gz
下载完成后LNMP一键安装包就会被下载到您的服务器或VPS上(一般用root登陆没切换目录的话应该在/root 下面)。

3、解压LNMP一键安装包:
执行:tar zxvf lnmp0.9.tar.gz 或 tar zxvf lnmp0.9-full.tar.gz 就会将LNMP一键安装包解压缩。

4、开始安装LNMP一键安装包:
进入LNMP安装目录,执行:cd lnmp0.9/ 或 cd lnmp0.9-full/
再执行安装程序前需要您确认您的Linux发行版,可以执行:cat /etc/issue 查看是CentOS、Debian还是Ubuntu,也可以通过VPS服务商提供的控制面板上查看。确定好之后,选择下面对应系统的安装命令:
CentOS系统下的安装
执行./centos.sh 2>&1 | tee lnmp.log
Debian系统下的安装
执行./debian.sh 2>&1 | tee lnmp.log
Ubuntu系统下的安装
执行./ubuntu.sh 2>&1 | tee lnmp.log
执行安装命令后,会出现如下界面:
lnmp-install-input-domain
输入要绑定的域名(建议使用一个二级域名,该域名会绑定到/home/wwwroot/,方便以后管理!如果输入有错误,可以按住Ctrl再按Backspace键删除),输入完成后回车,会显示如下界面:
(注:如果是Debian系统,输入域名后会提示Where are your servers located? asia,america,europe,oceania or africa,这里是选择服务器或VPS在哪个大洲,一般都是美国VPS,直接回车就行,如果是中国的,输入asia,回车。)
lnmp-install-input-mysql-root-password
再输入要设置的MySQL root的密码,输入完成后回车,会显示如下界面:
lnmp-install-input-mysql-innodb
如果需要安装InnoDB,可以输入 y 回车,不需要的话直接回车即可。回车后会显示如下界面:
lnmp-install-press
提示”Press any key to start…”,按回车键开始安装。
LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer这几个软件。

5、安装完成
如果显示如下界面:
lnmp-install-success
说明已经安装成功。
如果显示如下界面:
lnmp-install-failed
说明没有安装成功!!需要用winscp到lnmp0.9的目录下找到lnmp.log,并下载下来,到LNMP支持论坛发帖注明你的系统、32位还是64位,并将lnmp.log以附件形式上传到论坛,我们会通过日志查找错误,并在帖子上进行反馈。

 

虚拟主机管理

lnmp-vhost

1、添加虚拟主机,执行如下命令:/root/vhost.sh 根据提示输入要绑定的域名,回车,如果需要添加更多的域名,输入y,再输入要另外绑定的域名,多个域名可以用空格隔开(注:带www和不带www的是不同的域名,如需带www和不带的www的域名都访问同一个网站需要同时都绑定)。再输入域名绑定的目录(绝对目录,如/home/wwwroot/lnmp,如果不填默认是/home/wwwroot/绑定的域名,目录不一定非要是/home/wwwroot/,如果/data/ 下面有大量的空间也可以填写/data/www/lnmp 之类的。),再选择是否添加伪静态规则,默认已经有了discuz、discuzx、wordpress、sablog、emlog、dabr、phpwind、wp2(二级目录wp伪静态),可直接输入以上名称即可,如果需要添加自定义伪静态规则,直接输入一个想要的名字,程序会自动创建伪静态文件,直接在/usr/local/nginx/conf/你自定义的伪静态名字.conf 里面添加伪静态规则就行(注:添加完执行/etc/init.)。接下来会提示是否需要启用日志功能,一般情况下不需要启动,直接输入n就行,如需启动,输入y,再输入要定义的日志文件名字,回车就会自动添加虚拟主机。

2、删除虚拟主机,ssh执行:rm /usr/local/nginx/conf/vhost/域名.conf

安装其他组件

(注:安装如下组件,必须在lnmp0.9的安装目录,即lnmp压缩包解压缩后cd lnmp0.9/后的目录!,如果找不到可以执行find / -name eaccelerator.sh查找。)
(注:以下组件不一定您都需要,请按您的需求使用!)

1、安装PureFTPd和FTP管理面板,执行如下命令:./pureftpd.sh 按提示输入你MySQL的root密码、FTP用户管理面板的密码、MySQl的FTP数据库密码(可直接回车,自动生成一个密码),回车确认,就会自动安装PureFTPd,提示安装完PureFTPd后,在浏览器执行http://你的域名或IP/ftp/ 输入你前面设置的FTP用户管理面板的密码,就可以管理FTP。

2、安装eAccelerator,执行如下命令:./eaccelerator.sh ,按提示选择版本,回车确认后,就会自动安装并重启web服务。

3、安装ionCube,执行如下命令:./ionCube.sh 回车确认后,就会自动安装并重启web服务。

4、安装imageMagick,执行如下命令:./imageMagick.sh 回车确认后,就会自动安装并重启web服务。

5、安装memcached,执行如下命令:./memcached.sh 回车确认后,就会自动安装并重启web服务。

升级程序

6、升级Nginx版本,执行如下命令:./upgrade_nginx.sh 按提示输入nginx的版本号,如1.0.10,版本号可以从http://nginx.org/en/download.html获取。(注:升级过程中MySQL、PHP-FPM将会暂停。)

7、升级PHP版本,执行如下命令:./upgrade_php.sh 按提示输入php版本号,如5.3.6。(注:某些网站程序,如shopex等有兼容性问题,升级前确保你使用的程序以支持5.3.*版本。升级过程中Nginx、MySQL、PHP-FPM将会暂停。)

状态管理

LNMP状态管理: /root/lnmp {start|stop|reload|restart|kill|status}
Nginx状态管理:/etc/init.d/nginx {start|stop|reload|restart}
PHP-FPM状态管理:/etc/init.d/php-fpm {start|stop|quit|restart|reload|logrotate}
PureFTPd状态管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
MySQL状态管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Memcached状态管理:/etc/init.d/memcached {start|stop|restart}

相关图形界面程序

phpinfo : http://前面输入的域名或IP/phpinfo.php
phpMyAdmin : http://前面输入的域名或IP/phpmyadmin/
探针 : http://前面输入的域名或IP/p.php
PureFTP管理界面:http://前面输入的域名或IP/ftp/
Memcached测试页面:http://前面输入的域名或IP/memcached.php

LNMP相关目录

nginx : /usr/local/nginx
mysql : /usr/local/mysql
php : /usr/local/php
网站目录: /home/wwwroot/
Nginx日志目录:/home/wwwlogs/
/root/vhost.sh添加的虚拟主机配置文件所在目录:/usr/local/nginx/conf/vhost/

LNMP相关配置文件

Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
/root/vhost.sh添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf
MySQL配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/pure-ftpd.conf
PureFtpd MySQL配置文件:/usr/local/pureftpd/pureftpd-mysql.conf

 

注:LNMP一键安装包 0.9 & LNMPA已经在DiaHosting(感谢提供测试VPS)、VPSYOU(感谢提供测试VPS)、PhotonVPS(感谢提供测试VPS)、VPSZZLinodeXeHost瑞豪开源VPSYardVPSHostigationMyHost123ThrustVPSBuyVMDirectSpace等多家美国VPS的CentOS、Debian、Ubuntu的32位和64位系统上测试通过。(Debian5系统源目前有问题,请使用Debian6!小内存请勿使用64位系统)

最新的PHP补丁并不能修复漏洞

新闻来源:solidot
星期三, 一個 PHP 远程代码执行漏洞被意外公开在网上, 引发了利用此漏洞可对大量网站实施入侵的恐慌. 该 bug 可以追溯到 2004 年, 在最近的 CTF 比赛中被暴露. ‘当 PHP 以 CGI 模式运行时 (如 Apache 的 mod_cgid), php-cgi 会接受处理一個查询字符串作为命令行参数以开启某些功能

如 -s, -d 或 -c 传递给 php-cgi, 此处存在的漏洞可以允许攻击者查看源码或进行任意代码执行’ CERT 说. PHP 开发者向 PHP 5.3.12 和 5.4.2 发布了补丁, 但很快被发现补 丁并未能真的修补该漏洞.

PHP目录遍历漏洞(CVE-2012-1172)

发布日期:2012-05-07
更新日期:2012-05-08

受影响系统:
PHP PHP 5.3.x
不受影响系统:
PHP PHP 5.4.1
PHP PHP 5.3.11
描述:
——————————————————————————–

BUGTRAQ  ID: 53403
CVE ID: CVE-2012-1172

 

PHP是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。

PHP在实现上存在目录遍历漏洞,远程攻击者可利用带有目录遍历序列的特制请求检索、破坏或上传任意位置上的任意文件。

<*来源:Neale Poole

链接:https://bugzilla.RedHat.com/show_bug.cgi?id=799187
*>

建议:
——————————————————————————–
厂商补丁:

PHP

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.php.net