J3.x

J3.x:Abwärtskompatibilität in Joomla 3.4.7

From Joomla! Documentation

This page is a translated version of the page J3.x:Backward Compatibility in Joomla 3.4.7 and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎français

Was hat sich geändert ?

Ab der Version 3.4.7 verwendet Joomla! einen base64-kodierten Daten-Container, um die Session-Daten in Klartext in der globalen $_SESSION zu speichern.

Im Grunde hat sich folgendes in Joomla! geändert, von

function set($key, $value, $namespace)
{
  $_SESSION[$namespace][$key] = $value;
}

zu

function set($key, $value, $namespace)
{
  $this->data->set($namespace . ‘.’ . $key, $value); 
  $_SESSION[‘joomla’] = base64_encode(serialize($this->data));
}

Warum wurde das geändert?

Die Änderung wurde nötig um einen kritischen PHP Fehler zu fixen, der im September 2015 entdeckt wurde. Der Fehler hat mehrere Angriffsvektoren zu Klartext Nutzereingaben verbunden, die in der Session gespeichert wurden.

Wird meine Erweiterung weiterhin funktionieren?

Es gibt 3 Szenarien:

1. Szenario - JSession wird bereits genutzt: In diesem Fall ist alles sicher, weil die API von JSession sich nicht geändert hat. Die Verschlüsselung der Session wurde transparent implementiert, so dass keine Änderungen am Code vorgenommen werden müssen.

2. Szenario - $_SESSION wird genutzt um eigenen, erweiterungsspezifische Daten zu lesen oder zu schreiben: In diesem Fall wird die Erweiterung weiter funktionieren. Der neue Code greift nicht auf andere Daten der globalen $_SESSION Variable zu.

3. Szenario - $_SESSION wird eingesetzt, um generelle mit Joomla! oder anderen Erweiterungen geteilte Daten zu lesen oder zu schreiben: In diesem Fall wird Deine Erweiterung nicht mehr funktionieren, da die interne Struktur von $_SESSION geändert wurde. Eine einfache Lösung ist die direkte Verwendungen von $_SESSION mit JSession zu ersetzen.