Acabo de notar que mi host comenzó a usar Suhosin Hardening, no estoy muy familiarizado con esto y estoy teniendo problemas importantes con mi aplicación, principalmente en las sesiones.Descifrar y leer datos de la sesión de Suhosin
La sesión aber se almacena en el siguiente formato:
_EzyqHpPJqmQbSpRmXAJTxuFq980aNQlc3XAiRkWxlZQ9B0fnV...
no me importa eso, pero su también romper mi solicitud, necesito una manera de descifrar el cifrado porque no es dejar a mi Registro mi aplicación debido a esto.
tengo una función para serializar los datos de la sesión, no sabe dónde cogí pero aquí está:
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);
}
está dando errores de desplazamiento con esa función, ya que los datos de sesión no está en el formato que está esperando y es por eso que me preguntaba si alguien sabe de un método para descifrar/decodificar los feos datos suhosin anteriores para presentarlo en su formato original?
- EDITAR -
Publicación de la función que utiliza la función unserialize por encima de
/***********************************************************************
# 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;
}
}
}
Gracias de antemano!
¿Por qué accedió manualmente a la tienda de sesiones en primer lugar? ¿Qué pasa con 'session_start()' y usando '$ _SESSION' directamente? – mario
session_start() es para iniciar una sesión y $ _SESSION es una matriz superglobal que solo almacena la información de la sesión que está disponible en el espacio global, estoy recuperando los resultados bajo demanda principalmente para autenticar y mostrar información de la sesión. Publicaré otra función que usa la función anterior. – Zubair1
¿Puedes usar ini_set() para desactivar el cifrado que está usando? http://www.hardened-php.net/suhosin/configuration.html#suhosin.session.encrypt – preinheimer