首页 > web开发 > 其他综合 > 正文
3.2.1.4 跟读首页文件
2015-11-27 16:16:26     我来说两句      
收藏    我要投稿

通过对系统文件大概的了解,我们对这套程序的整体架构已经有了一定的了解,但是还不够,所以我们得跟读一下index.php文件,看看程序运行的时候会调用哪些文件和函数。

打开首页文件index.php可以看到如下代码:

if(!file_exists(dirname(__FILE__).'/data/install.lock'))
    header ("Location:install/index.php");
define('IN_QISHI', true);
$alias="QS_index";
require_once(dirname(__FILE__).'/include/common.inc.php');

首先判断安装锁文件是否存在,如果不存在则跳转到install/index.php,接下来是包含/include/common.inc.php 文件,跟进该文件查看:

require_once(QISHI_ROOT_PATH.'data/config.php');
header("Content-Type:text/html;charset=".QISHI_CHARSET);
require_once(QISHI_ROOT_PATH.'include/common.fun.php');
require_once(QISHI_ROOT_PATH.'include/74cms_version.php');

/include/common.inc.php文件在开头包含了三个文件,data/config.php为数据库配置文件,include/common.fun.php文件为基础函数库文件,include/74cms_version.php为应用版本文件。接着往下看:

if (!empty($_GET))
{
$_GET  = addslashes_deep($_GET);
}
if (!empty($_POST))
{
$_POST = addslashes_deep($_POST);
}
$_COOKIE   = addslashes_deep($_COOKIE);
$_REQUEST  = addslashes_deep($_REQUEST);

这段代码调用了include/common.fun.php文件里面的addslashes_deep() 函数对GET/POST/COOKIE参数进行了过滤,再往下走可以看到又有一个包含文件的操作:

require_once(QISHI_ROOT_PATH.'include/tpl.inc.php');
包含了include/tpl.inc.php文件,跟进看看这个文件做了什么:
include_once(QISHI_ROOT_PATH.'include/template_lite/class.template.php');
$smarty = new Template_Lite;
$smarty -> cache_dir = QISHI_ROOT_PATH.'temp/caches/'.$_CFG['template_dir'];
$smarty -> compile_dir =  QISHI_ROOT_PATH.'temp/templates_c/'.$_CFG ['template_dir'];
$smarty -> template_dir = QISHI_ROOT_PATH.'templates/'.$_CFG['template_dir'];
$smarty -> reserved_template_varname = "smarty";
$smarty -> left_delimiter = "{#";
$smarty -> right_delimiter = "#}";
$smarty -> force_compile = false;
$smarty -> assign('_PLUG', $_PLUG);
$smarty -> assign('QISHI', $_CFG);
$smarty -> assign('page_select',$page_select);

首先看到包含了include/template_lite/class.template.php文件,这是一个映射程序模板的类,由Paul Lockaby paul和Mark Dickenson编写,由于该文件较大,我们这里不再仔细分析,继续往下跟进,可以看到这段代码实例化了这个类对象赋值给$smarty变量,继续跟进则回转到index.php文件代码:

if(!$smarty->is_cached($mypage['tpl'],$cached_id))
{
require_once(QISHI_ROOT_PATH.'include/mysql.class.php');
$db = new mysql($dbhost,$dbuser,$dbpass,$dbname);
unset($dbhost,$dbuser,$dbpass,$dbname);
$smarty->display($mypage['tpl'],$cached_id);
}
else
{
$smarty->display($mypage['tpl'],$cached_id);
}

判断是否已经缓存,然后调用display()函数输出页面,审计到这里是否对整个程序的框架比较熟悉了?接下来像审计index.php文件一样跟进其他功能入口文件即可完成代码通读。

点击复制链接 与好友分享!回本站首页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.2.1.3 查看配置文件
下一篇:3.3 根据功能点定向审计
相关文章
图文推荐
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站