[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