最初接触Zen Cart之时,看到很多源文件头部都有下面这样一段代码:

   if (!defined('IS_ADMIN_FLAG')) {
     die('Illegal Access');
   }

很纳闷!感觉怪怪的,为什么不放在一个公共文件中呢?另外,认为IS_ADMIN_FLAG这个标志,仅仅是用来区分网站管理员后台和前端的。

过来很长一段时间后,才恍然大悟!原来这段代码更是基于安全性来考虑的。Zen Cart呈现一个页面的时候,实际上加载了很多PHP源文件,比如仅仅首页,Zen Cart就加载了100多个PHP源文件。其中有的源文件,包含有操作数据库的逻辑,若没有IS_ADMIN_FLAG这段代码的话,访问者就可以直接在浏览器中输入调用源文件。唉,语言已经不能表述清楚,举例说明。

对于下面的这个源文件:

   /includes/modules/meta_tags.php

访问者可以直接调用,如下:

   http://www.domain.com/includes/modules/meta_tags.php

假设meta_tags.php中有一些会毁坏数据库的逻辑,或者攻击者构造一些输入参数,把一些机密数据显示出来的话,就很不好了。

Zen Cart在加载文件的最开始部分,首先定义IS_ADMIN_FLAG常量,这样才能保证源文件能作为一个整体被Zen Cart执行。IS_ADMIN_FLAG的定义是存在在下面两个文件中的:

   /admin/includes/application_top.php : define('IS_ADMIN_FLAG', true);
   /includes/application_top.php : define('IS_ADMIN_FLAG', false);