J3.x

Backward compatibility 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 • ‎español • ‎français • ‎Nederlands

Wat is er gewijzigd?

Vanaf versie 3.4.7 maakt Joomla gebruik van een base64-gecodeerde data container om de sessiedata in op te slaan in plaats van het als plaintext op te slaan in global $_SESSION.

Simpel gezegd, Joomla gaat van

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

naar

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

Waarom is dit gewijzigd?

Dit was nodig om om een kritieke PHP bug heen te kunnen werken die in september 2015 bijgewerkt is. Deze bug creëert verschillende vectoraanvallen die verbonden zijn met de plaintext data, die door de gebruiker opgeslagen is, in een sessie.

Zullen mijn extensies blijven functioneren?

Er zijn 3 scenario's mogelijk:

Scenario 1 - Er wordt al gebruik gemaakt van JSession: Als dit het geval is bent u al veilig omdat de API van JSession niet gewijzigd is. De sessie-encodering is op een transparante wijze geïmplementeerd zodat er geen wijzigingen in uw code benodigd zijn.

Scenario 2 - U gebruikt $_SESSION om uw eigen specifieke extensie-data te lezen en schrijven: In dit geval zal uw extensie blijven functioneren. De nieuwe code raakt geen andere data in de globale $_SESSION aan.

Scenario 3 - U gebruikt $_SESSION om algemene data, gedeeld met Joomla of andere extensies, te lezen of schrijven: In dit geval zal uw extensie breken omdat de interne structuur van $_SESSION is gewijzigd. Een makkelijke oplossing is door $_SESSION te laten vervangen door JSession.