Mailinglisten-Archive |
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