Be careful with your random tokens — Meldium
Mais enfin... NON ! On utilise JAMAIS un UUID comme token ! Rhhâââ...
Les UUID offrent la garantie d'unicité, mais en **aucun cas** d'aléa non prédictible.
Ou alors il faut recourir à des fonctions crypto, par exemple en concaténant un salt à l'UUID et en hashant le tout (sha1 ou autre). Là on a un token assez solide (et résistant à l'attaque d'anniversaire). L'idéal étant tout de même un véritable générateur aléatoire, mais ce n'est pas à la portée de tous.
(Et là je viens de m'apercevoir que dans Shaarli, comme un con, j'ai oublié d'ajouter un salt avant de hasher pour générer les tokens ... doh. Rassurez-vous, le risque sécurité est très faible (Je vois mal quelqu'un lancer une attaque d'anniversaire à travers une attaque CSRF... ou alors je me trompe ? En javascript ? ça me paraît assez peu réaliste.)
(Oui j'ai bien conscience que j'ai dû perdre quelques lecteurs depuis le début de cet article.)
EDIT: Si vous voulez patcher Shaarli tout de suite, dans la fonction getToken() modifiez la ligne:
$rnd = sha1(uniqid('',true).'_'.mt_rand());
en:
$rnd = sha1(uniqid('',true).'_'.mt_rand().'####CE QUE VOUS VOULEZ, ÇA PEUT MÊME ÊTRE ASSEZ LONG####');
Et voilà. Bye bye l'attaque d'anniversaire.
2013-02-19 23:49:08
http://blog.meldium.com/home/2013/2/19/be-careful-with-your-random-tokens