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

最后加到页面后面的代码是这样的(解码后):

<script type="text/javascript" src="http://update.v9.phpcms.cn/index.php?action=notice&phpcms_username=&sitename=默认站点&siteurl=http://localhost/phpcms/&charset=utf-8&version=V9.6.3&release=20170515&os=WINNT&php=7.0.12&mysql=5.5.53&browser=Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36&username=phpcms&email=275423729@qq.com&modules=admin&sitelist=http://localhost/phpcms/,&uuid=0b5aacb6-0d3c-13e2-a47b-d9cb3a26d359&verify=83f1ab93b35fb87202e613e4decbecc2"></script>

这就是向官网提交我们网址,管理员名字浏览器等信息的代码啊。难怪此前清除了模板中update.v9.phpcms.cn网址仍然提交,原来它将网址加密了,然后还加了你的相关信息。

如何删除它?

一是换一个网址,将http://update.v9.phpcms.cn/index.php换成你的。不让它向官网提交,但访问你的网址你并不需要。最好的办法是去掉访问。

但不要这段代码是不行的,会无法显示。因为$(“#main_frameid”).removeClass(“display”); 是让加载的页面显示,也就是说默认是不显示的。没有js,浏览器不显示内容。我们要干掉的其实是这个‘'
去掉它,将剩下的:

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

base64_encode。得到

PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoIiNtYWluX2ZyYW1laWQiKS5yZW1vdmVDbGFzcygiZGlzcGxheSIpOzwvc2NyaXB0PiA8ZGl2IGlkPSJwaHBjbXNfbm90aWNlIj48L2Rpdj4=

替换原来的,就可以了。

(0)

相关推荐

  • 解决phpcms更换javascript的幻灯片代码调用图片问题

    今天找到了一个js要放在phpcms上边!但是他的代码是这样的 复制代码 代码如下: var titles = '创顶1|创顶2|创顶3|创顶4'; var imgs='{APP_PATH}cdstyle/images/image1.jpg|{APP_PATH}cdstyle/images/image2.jpg|{APP_PATH}cdstyle/images/image3.jpg|{APP_PATH}cdstyle/images/image4.jpg'; var urls='http://ba

  • CodeIgniter使用phpcms模板引擎

    CodeIgniter很适合小站点应用开发,但是它自带的view功能可能会给不懂PHP的前端人员带来麻烦. 相比之下phpcms的view模板解析就强大多了,所以这里就把PHPCMS的模板解析功能剥离出来,加到PHPCMS上.首先在CodeIgniter libraries中 增加 template_cache.php 复制代码 代码如下: <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /** *

  • phpcms手机内容页面添加上一篇和下一篇

    在phpcms\modules\wap\index.php里面,搜索下面这句 复制代码 代码如下: if(!$r || $r['status'] != 99) showmessage(L('info_does_not_exists'),'blank'); 找到后,在它的下一行添加上 复制代码 代码如下: //上一页  $previous_page = $this->db->get_one("`catid` = '$catid' AND `id`<'$id' AND `statu

  • phpcms配置列表页以及获得文章发布时间

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <div class="moocConDetail"> {pc:content action="lists" catid="11" order="id DESC" num="10" moreinfo="1"} <ul> {loop $data $key $val} {php list($copyfrom) =

  • PHPCMS的使用小结

    下面我讲讲关于这套系统的加载流程 定义根目录,定义include目录 加载核心文件 配置文件'config.inc.php' 全局函数'global.func.php' 目录操作函数'dir.func.php' url相关函数'url.func.php' 数据输出相关类'output.class.php' 权限类'priv_group.class.php' 时间处理类'times.class.php' 加载语言数组'phpcms.lang.php' 加载数库存类'db_mysql.class.p

  • PHPCMS V9 添加二级导航的思路详解

    今天看了看phpcms 写到二级导航时发现点问题,查询导航栏的信息时返回的$r[arrchildid]与自己想象的不符,文档上说是返回子栏目id但是却有些不同. 开始的思路: <ul class="nav navbar-nav"> <li class="active"><a href="{siteurl($siteid)}">首页</a></li> {pc:content action=

  • PHPCMS2008广告模板SQL注入漏洞修复

    00 漏洞描述 PHPCMS2008由于广告模块取referer不严,导致一处sql注入漏洞.可以得到管理员用户名与密码,攻击者登录后台后可能会获取webshell,对服务器进行进一步的渗透. 01 漏洞分析 漏洞产生的位置: /ads/include/ads_place.class.php的show方法中. function show($placeid) ... if($adses[0]['option']) { foreach($adses as $ads) { $contents[] =

  • phpcms的分类名称和类别名称的调用

    话不多说,请看代码: //在需要调用的模板前写这句代码,$CATEGORYS 代表分类,$TYPE 代表类别(没有这句话,调不出来) {php $CATEGORYS = getcache('category_content_'.$siteid,'commons');$TYPE = getcache('type_content','commons');} //调用 {$TYPE[$typeid]['name']} //$typeid代表分类的id(在后台可以看到) {$CATEGORYS[$cat

  • PHPCMS手机站伪静态设置详细教程

    1.打开/phpcms/modules/wap/functions/global.func.php 找到里面的这两个函数,如下图所示的注释掉的那行代码,在下面加入一行代码. function list_url($typeid) { #return WAP_SITEURL."&a=lists&typeid=$typeid"; return "/list-$typeid".'.html'; } function show_url($catid, $id,

  • linux服务器下PHPCMS v9 安全配置详解

    一.目录权限设置很重要:可以有效防范黑客上传木马文件. 如果通过 chmod 644 * -R 的话,php文件就没有权限访问了. 如果通过chmod 755 * -R 的话,php文件的权限就高了. 所以就需要分开设置目录权限和文件权限: linux 服务器权限:经常要用到的命令: find /path -type f -exec chmod 644 {} \; //设置文件权限为644 find /path -type d -exec chmod 755 {} \; //设置目录权限为755

  • 如何给phpcms v9增加类似于phpcms 2008中的关键词表

    最近用phpcms v9二次开发一个人站点,之前用2008中有个比较舒服的关键词全部显示出来功能,而v9将关键词列表功能增加到了搜索中,如果搜索一个关键词就会自动产生一个增加到了search_keyword表中,这一点不是很喜欢v9;站内搜索功能,我觉得一般会用得比较少,而我们在增加文章的时候实际上就把关键词分隔开了,为什么还要多此一举了,其实改起来也比较简单 在model文件夹中增加一个keyword_ext_model.class.php.keyword_model实际是存在model文件夹

  • php笔记之:初探PHPcms模块开发介绍

    由于工作关系,只能暂时放弃对mongodb的研究了 .开始研究PHPcms . 目前为止我已经基本完成了模块的开发.趁着周末来这里做个总结.我发现phpcms写的还不错,不过文档什么的确实不多. 不说废话了.对于phpcms的模块开发.首先要了解模块的目录结构. 我们可以在http://v9.help.phpcms.cn/html/2010/structure_0928/69.html 找到他的目录结构   我们要开发的东东(也就是模块)就在/phpcms/modules/下面 如果没有什么特别

  • PHPCMS忘记后台密码的解决办法

    什么是PHPCMS? PHPCMS是一款网站管理软件.该软件采用模块化开发,支持多种分类方式,使用它可方便实现个性化网站的设计.开发与维护.它支持众多的程序组合,可轻松实现网站平台迁移,并可广泛满足各种规模的网站需求,可靠性高,是一款具备文章.下载.图片.分类信息.影视.商城.采集.财务等众多功能的强大.易用.可扩展的优秀网站管理软件. PHPCMS后台密码忘记解决办法,本文主要是从技术角度去解决的,请细看正文. 1. 密码忘记就得先找到加密的方法了 1.1 PHPCMS密码只能重试8次,超过重

  • Ajax实现phpcms 点赞功能实例代码

    首先 是将后台中 模块--->新闻心情--->心情配置  去掉多余的剩一个,名称改成 "赞" 提交保存. 其次 是修改新闻心情的模板文件:/phpcms/templates/default/mood/index.html 删除所有代码只返回点赞总数量 {loop $setting $k $v} {$data[$v['fields']]} {/loop} 模板页面的实现如下  通过循环数组 <div class="info"> <a hr

  • PHPCMS遭遇会员投稿审核无效的解决方法 原创

    今天接到主编那边的反馈,说本站的会员投稿平台,后台无法审核文章了,赶紧看看吧 本来想偷个懒,去度娘那里搜搜,看有相同情况的解决方案没,结果大失所望,虽然也有几个类似的情况,要么没解决,要么就是原因跟本站不同. 得了,毛主席他老人家教导我们,自己动手,丰衣足食! 先找到审核的相关程序页 /phpcms/modules/content/content.php中的pass()方法,检查了下,并无被修改的现象 去审核页面按F12调试,控制台也无报错情况 真是奇了怪了, 查看下源码,发现了这段 <scri

  • 使用PHPCMS搭建wap手机网站

    下面给大家讲使用PHPCMS搭建wap手机网站的方法,具体内容请看下文. 首先在phpcms/libs/functions/extention.func.php里面写入判断手机访问的自定义函数 <?php /** * extention.func.php 用户自定义函数库 * * @copyright (C) 2005-2010 PHPCMS * @license * @lastmodify 2010-10-27 */ //判断是否手机访问 function check_wap() { if (

  • phpcms中的评论样式修改方法

    phpcms中自带的评论插件很好用!但是样式个人感觉丑的狠,百度一下也没能找到解决方式,也许是自己的搜索方式不对,于是自己就研究了研究,这里可以使用两种方法进行修改 方法一: 使用PHPCMS中的get方法进行获取数据 //拼接评论表的commentid字段值 {php $commentid = 'content_'.$catid.'-'.$id.'-'.$modelid;} //查询获取数据 {pc:get sql="SELECT * FROM v9_comment_data_1 where

  • phpcms模块开发之swfupload的使用介绍

    正式接触phpcms模块开发后.开发了几个功能模块.其中遇到了需要批量上传图片的问题.于是开始挖掘phpcms里面的swfupload的用法. 在phpcms里面自带的内容类型里面能够直接指定图片组.不过这样的图片组功能并不是我想用的.我需要上传一整个静态的html文件.需要 能够找到一个方法上传整个文件夹.并且能够保留原来的文件名称. 目的总结如下: 1,不改变系统的文件和目录结构. 2,实现多附件上传功能. 3,能够得到上传后的文件夹名称. 在phpcms中自带了附件上传的功能.我想去用sw

随机推荐