phpbar.de logo

Mailinglisten-Archive

[php] Session-ID

[php] Session-ID

Kristian =?iso-8859-1?Q?K=F6hntopp?= kk_(at)_netuse.de
Mon, 17 May 1999 11:08:42 +0200


Marco Kunkler wrote:
> ist es sicher als "geheimer string" microtime zu verwenden ?

Nein. Außerdem geht microtime schon in uniqid() ein.
Genaugenommen ist in functions/uniqid.c:php3_uniqid() ein Call zu
gettimeofday() drin, der dann als

sprintf(uniqid, "%s%08x%05x", prefix->value.str.val, sec, usec);

endet.

Der Punkt ist, daß man md5(uniqid("")) raten kann, wenn man die
ungefähre lokale Systemzeit des Zielsystems und dessen clock
resolution kennt. Der zu durchsuchende md5-Space ist dann sehr
viel kleiner als 2^128 Kombinationen.

Du mußt als Parameter zu uniqid() einen manuell codierten,
geheimgehaltenen und möglichst zufällig gewählten Wert nehmen.
Also einen String, der wie ein Paßwort ausgewählt und behandelt
wird. Dann ist das Resultat von md5(uniqid($geheim)) nicht mehr
vorhersagbar und auch bei Kenntnis der ungefähren Systemzeit zur
Erstellung der ID nicht mehr ratbar. Stattdessen muß brute force
ein 2^128 Elemente großer Ergebnisraum abgesucht werden (modulo
Probleme mit der MD5-Funktion; eine andere Hashfunktion wäre
besser, aber für den Hausgebraucht ist md5 gut genug).

Kristian

-- 
Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00
Using PHP3? See our web development library at
http://phplib.shonline.de/ (GPL)


php::bar PHP Wiki   -   Listenarchive