文件作用解析之:init_sanitize.php

本文详细介绍了如何过滤GET参数并实现安全令牌机制,包括强制设置安全令牌、检查POST请求中的action合法性、销毁全局变量、检查产品ID的合法性及处理main_page参数的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按它的说明就是:sanitize the GET parameters,过滤get参数。
最关注的main_page就是在这里得到处理的。
注意:
1、
if (! isset ( $_SESSION ['securityToken'] ))
  {
    $_SESSION ['securityToken'] = md5 ( uniqid ( rand (), true ) );
  }
好像会强行给session里设置一个安全令牌,这个要注意,在扩展的时候。

2、
if ((isset ( $_GET ['action'] ) || isset($_POST['action']) ) && $_SERVER['REQUEST_METHOD'] == 'POST')
  {
    $mainPage = isset($_GET['main_page']) ? $_GET['main_page'] : FILENAME_DEFAULT;
    if (!in_array($mainPage, $csrfBlackList))
    {
      if ((! isset ( $_SESSION ['securityToken'] ) || ! isset ( $_POST ['securityToken'] )) || ($_SESSION ['securityToken'] !== $_POST ['securityToken']))
      {
        zen_redirect ( zen_href_link ( FILENAME_TIME_OUT, '', $request_type ) );
      }
    }
  }
这里的意思是:如果是用post提交,带了一个action来;或者在get请求里,明确指定了一个action,那么要检查这个action的合法性:如果这个action在黑名单里,就会被跳转到链接超时的页面。这个超时页面大概是这个样子:

Whoops! Your session has expired.

If you were placing an order, please login and your shopping cart will be restored. You may then go back to the checkout and complete your final purchases.


。。。。


3、销毁get、post、cookie、session里的key对应的全局变量(不知何目的):

如:

/**

 * process all $_SESSION terms

 */

  if (isset($_SESSION) && count($_SESSION) > 0) {

    foreach($_SESSION as $key=>$value){

      if(is_array($value)){

        foreach($value as $key2 => $val2){

          unset($GLOBALS[$key]);

        }

      } else {

        unset($GLOBALS[$key]);

      }

    }

  }


4、检查products_id的合法性

通过sql查询看存不存在指定id的商品,如果不存在,则会重定向到产品页面,并且提示说产品不存在。如: 对不起,没有找到该商品。


5、终于到了处理main_page了:

1、如果没有main_page参数,则赋予index

 if (!isset($_GET['main_page']) || !zen_not_null($_GET['main_page'])) $_GET['main_page'] = 'index';

2、找到对应的功能页面:

if (!is_dir(DIR_WS_MODULES . 'pages/' . $_GET['main_page'])) {

    if (MISSING_PAGE_CHECK == 'On' || MISSING_PAGE_CHECK == 'true') {

      $_GET['main_page'] = 'index';

    } elseif (MISSING_PAGE_CHECK == 'Page Not Found') {

      header('HTTP/1.1 404 Not Found');

      $_GET['main_page'] = FILENAME_PAGE_NOT_FOUND;

    }

  }

  $current_page = $_GET['main_page'];

  $current_page_base = $current_page;

  $code_page_directory = DIR_WS_MODULES . 'pages/' . $current_page_base;

  $page_directory = $code_page_directory;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值