解密和阅读Suhosin会话数据

Zub*_*ir1 8 php security suhosin

我刚注意到我的主持人开始使用Suhosin Hardening,我对此并不熟悉,并且我的应用程序存在重大问题,主要是在会话中.

会话正在以以下格式存储:

_EzyqHpPJqmQbSpRmXAJTxuFq980aNQlc3XAiRkWxlZQ9B0fnV...
Run Code Online (Sandbox Code Playgroud)

我不介意,但它也打破了我的应用程序,我需要一种解码加密的方法,因为它不会让我登录到我的应用程序因此.

我有一个函数来反序列化会话数据,不知道我在哪里,但它是:

public function unserialize_session_data($data)
{
    $variables = array();

    $a = preg_split( "/(\w+)\|/", $serialized_string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );

    for( $i = 0; $i < count( $a ); $i = $i+2 )
    {
        $variables[$a[$i]] = unserialize( $a[$i+1] );
    }

    return($variables);
}
Run Code Online (Sandbox Code Playgroud)

它给出了该函数的偏移错误,因为会话数据不是它期望的格式,这就是为什么我想知道是否有人知道解密/解码上述难看的suhosin数据的方法以原始格式呈现它?

- 编辑 -

发布使用上述反序列化函数的函数

 /***********************************************************************
 #  Get Session Data of a certain session id
 #  --------------------------------------
 #  This function will retrieve all session information related to a certain session id from
 #  the database, after that it unserializes the data and returns an array of data.
 #
 #  @return array  (Containing Session Data)
 ***********************************************************************/
    public function get_session_data($session_id)
    {
        if (isset($session_id) && $session_id != "")
        {
            $sql = mysql_query("SELECT ses_value FROM sessions WHERE (ses_id = '$session_id');") or die ("MySQL Error : <b>" . mysql_error() . "</b><br />");

            if (mysql_num_rows($sql) > 0)
            {
                $res = mysql_fetch_assoc($sql);
                $res = $this->unserialize_session_data($res['ses_value']);
                        return $res;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

提前致谢!

pre*_*mer 0

你可以用它ini_set()来关闭它正在使用的加密吗?

您需要指定要用于加密会话数据的确切密钥(该页面指示可以通过 执行此操作ini_set())才能对其进行解密。完成后,使用密钥解密它应该成为可能(我不确定它使用的是什么加密系统)。