PHP: Sichere und unikate Token erstellen

Für die Getnudged API verwende ich Token um Benutzer zu authentifizieren, oder ihnen Pakete zuzuweisen. Pakete sind in unserem System optionale und/oder relevante Erweiterungen.

Im Grunde sind sie mit „Modulen“ gleichzustellen. Also hat der Administrator beispielsweise Zugang zum Paket Benutzer um alle Benutzer zu verwalten. Der Benutzer an sich hat allerdings nur Zugang zum Paket „Profile“ und kann seine eigenen Einstellungen verändern.

Zurück aber zum Token. Ich hatte nach einer Möglichkeit gesucht, einen sicheren aber unikaten Token für jeden Benutzer zu erstellen. Meine Suchen im Internet haben mich zu folgendem PHP script geführt:

$length = 16;
$token = openssl_random_pseudo_bytes($length);        
$token = bin2hex($token);
return $token;Code-Sprache: PHP (php)

Ergebnis: 523b48159631e4e28ab1be060d64e095

So bekommen wir einen 32 stelligen Token. Jetzt wollte ich aber noch Bindestriche nach jedem 8ten Charakter haben. Das habe ich folgendermaßen gelöst:

$length = 16;

$token = openssl_random_pseudo_bytes($length);        
$token = bin2hex($token);

// alle 8 zeichen ein bindestrich
$token = chunk_split($token, 8, '-');
$token = rtrim($token, '-');

return $token;Code-Sprache: PHP (php)

Ergebnis: 523b4815-9631e4e2-8ab1be06-0d64e095

So einfach geht das. Weitere Details zu den verschiedenen Funktionen findest du hier: