[CCA Developers] unserialize Alternative

Martin Auswöger martin at auswoeger.com
Fr Feb 21 10:01:07 CET 2014


Hallo,

ich hoffe diese Mailinglist ist der Richtige Platz hierfür.

Piwik hatte ebenfalls ein Sicherheitsproblem mit unserialize. Sie haben daraufhin einen ähnlichen Ansatz wie jetzt in Contao eingebaut ist, mit einem eigenen unserialize-Parser ersetzt, siehe: https://github.com/piwik/piwik/commit/ee6efcb8701c3378481c71245651e71389001084

Der Parser ist hier zu finden: https://github.com/piwik/piwik/blob/master/libs/upgradephp/upgrade.php#L307

Wäre es sinnvoll diesen unserialize-Parser in Contao zu übernehmen (Lizenz ist Public Domain) und in der deserialize zu verwenden?

Vermutlich ist die Geschwindigkeit um ein vielfaches langsamer als die native Variante. Man könnte aber den "langsamen" Parser auch einfach nur für die Strings verwenden die durch die RexExp-Sicherheitsprüfung durchgefallen sind, so in der Art:

```
// Potentially including an object (see #6724)
if (preg_match('/[OoC]:\+?[0-9]+:"/', $varValue))
{
	$varUnserialized = safe_unserialize($varValue);
}
else
{
	$varUnserialized = @unserialize($varValue);
}
```

Damit könnten false-positives ausgeschlossen werden und solche Strings ließen sich wieder deserializen:
a:1:{i:0;s:13:"foo:123:"BAR"";}
Es könnte auch der Support für `stdClass` nachgerüstet werden.

Was haltet ihr davon?

LG Martin


More information about the Developers mailing list