phpcms v9禁止提交信息到官网方法详解


本文整理自网络,侵删。

phpcmsv9后台登陆时,会向官网http://update.v9.phpcms.cn联网,说是检查更新,实际同时也收集网站以及管理员的用户信息还有登陆者的设备等信息。开始以为去掉后台模板中的相关网址就行了。结果登陆时还是发现会向官网提交信息。于是追了一下。在登陆成功后,会首先显示一个默认页。显示管理员名字,服务器信息等。它是调用modules\admin\index.php中的public_main()方法加载的。

在这个方法中的最后几行代码如下:

$designer = '张二强';
ob_start();
include $this->admin_tpl('main');
$data = ob_get_contents();
ob_end_clean(); 
system_information($data);

意思是,将内容缓存,然后给$data,再调用system_information处理。

system_information()函数,显然是一个已经加载的类库中的函数,查询后发现它位于modules\admin\functions\admin.func.php文件中。代码如下:

 function system_information($data) {
    $update = pc_base::load_sys_class('update');
    $notice_url = $update->notice(); 
    $string = base64_decode('PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoIiNtYWluX2ZyYW1laWQiKS5yZW1vdmVDbGFzcygiZGlzcGxheSIpOzwvc2NyaXB0PjxkaXYgaWQ9InBocGNtc19ub3RpY2UiPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik5PVElDRV9VUkwiPjwvc2NyaXB0Pg==');
    echo $data.str_replace('NOTICE_URL',$notice_url,$string); 
  }

这里有一个解码来获得字串,我们先解码看看这些字符串是什么。

加个 echo $string 看看。结果浏览器中什么也没有。嗯?明明解码成字符串,为什么什么也没有呢?其实是有的。它是一段‘javascript'字串,所以你在浏览器中看不到。
解码后的内容如下:

<script type="text/javascript">$("#main_frameid").removeClass("display");</script><div id="phpcms_notice"></div><script type="text/javascript" src="NOTICE_URL"></script>

到这里还看不出什么。然后,它将src=”NOTICE_URL”中的NOTICE_URL替换成noticeurl。然后加到已经生成的data数据后面。也就是向$data中加了一段代码。

加的网址从何而来,加的又是什么网址呢?

函数先加载了update类。然后调用了该类的notice()方法。我们跟进类文件libs\classes\update.class.php看看。

function notice() {
    return $this->url('notice');
  }

function url($action = 'check') {
    $modules = '';
    $site = getcache('sitelist','commons');
    $sitename = $site['1']['name'];
    $siturl = $site['1']['domain'];
    foreach ($site as $list) $sitelist .= $list['domain'].',';
    $pars = array(
      'action'=>$action,
      'phpcms_username'=>'',
      'sitename'=>$sitename,
      'siteurl'=>$siturl,
      'charset'=>CHARSET,
      'version'=>PC_VERSION,
      'release'=>PC_RELEASE,
      'os'=>PHP_OS,
      'php'=>phpversion(),
      'mysql'=>$this->db->version(),
      'browser'=>urlencode($_SERVER['HTTP_USER_AGENT']),
      'username'=>urlencode(param::get_cookie('admin_username')),
      'email'=> urlencode(param::get_cookie('admin_email')),
      'modules'=>ROUTE_M,
      'sitelist'=>urlencode($sitelist),
      'uuid'=>urlencode($this->uuid),
      );
    $data = http_build_query($pars);
    $verify = md5($this->uuid);    
    if($s = $this->module()) {
      $p = '&p='.$s;
    }
    return $this->update_url.'?'.$data.'&verify='.$verify.$p;
  }

这里收集了网站的多种信息,然后生成一个网址,加到js中,就会自动向该网址访问,并将信息提交给官网。

阅读剩余部分

相关阅读 >>

phpcmsv9父栏目调用子栏目的方法

栏目调用详解

phpcms小技巧:巧用碎片功能

phpcms v9自定义评论字段utf8_cmsyou修正版

phpcms数据库管理设置教程 如何设置phpcms数据库

phpcms v9列表页如何调用子栏目如首页产品中心产品类型a

phpcms2008图文安装教程详解

phpcms v9更换模板的具体操作方法

phpcms系统设置镜像下载模式 如何设置phpcms镜像下载模式

phpcms v9后台登陆模板修改方法和程序版本更新提示修改方法

更多相关阅读请进入《phpcms》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...