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中,就会自动向该网址访问,并将信息提交给官网。

阅读剩余部分

相关阅读 >>

十二个常见的php+mysql类免费cms系统

phpcms v9忘记管理员后台密码的解决方法

栏目调用详解

phpcms在nginx的rewrite伪静态标准写法

phpcms v9 彻底去除自带的水印功能的方法

国内一些常用php的cms的nginx服务器的伪静态规则整理

使用phpcms搭建wap手机网站

phpcms v9的后台编辑器无法上传图片的解决方法

phpcms实现在首页列表页频道页调用评论数代码分享

phpcms2008下的自定义url规则教程

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



打赏

取消

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

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

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

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

评论

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