phpでセキュアな(推測されにくい)IDを作成したい

phpでユニークなidといえばuniqid()がすぐに思い浮かぶけどこれはセキュアな状況では使用できない。
http://php.net/manual/ja/function.uniqid.php

警告
この関数は、ランダムな値を作るわけでもなければ予測不能な文字列を作るわけでもありません。 セキュリティを確保するためにこの関数を使ってはいけません。 予測不能でセキュアな ID を作りたい場合は、暗号学的にセキュアな乱数やハッシュを作る関数を利用しましょう。

なので以下のようにする。

sha1( uniqid( mt_rand() , true ) );

より高速に、推測困難な一意なIDを生成する方法 - [サンプルコード/PHP] ぺんたん info
PHPでユニークなIDを生成する:uniqid() - kakakakakku blog