Jawaban singkatnya adalah ya. Jawaban panjangnya juga ya. /dev/urandom menghasilkan data yang tidak dapat dibedakan dari keacakan sebenarnya, mengingat teknologi yang ada. Mendapatkan keacakan "lebih baik" dari apa /dev/urandom berikan tidak ada artinya, kecuali jika Anda menggunakan salah satu dari beberapa algoritme kriptografi "teori informasi", yang bukan kasus Anda (Anda akan mengetahuinya).
Halaman manual untuk urandom agak menyesatkan, bisa dibilang salah, ketika menyarankan bahwa /dev/urandom mungkin "kehabisan entropi" dan /dev/random harus disukai; satu-satunya instan di mana /dev/urandom mungkin menyiratkan masalah keamanan karena entropi rendah adalah pada saat-saat pertama instalasi OS otomatis yang baru; jika mesin mem-boot ke titik di mana ia mulai memiliki beberapa aktivitas jaringan, maka ia telah mengumpulkan cukup keacakan fisik untuk memberikan keacakan dengan kualitas yang cukup tinggi untuk semua penggunaan praktis (saya berbicara tentang Linux di sini; di FreeBSD, instan sesaat dari sedikit kelemahan tidak terjadi sama sekali). Di sisi lain, /dev/random memiliki kecenderungan memblokir pada waktu yang tidak tepat, menyebabkan masalah kegunaan yang sangat nyata dan menjengkelkan. Atau, singkatnya:gunakan /dev/urandom dan berbahagialah; gunakan /dev/random dan menyesal.
(Edit: halaman Web ini menjelaskan perbedaan antara /dev/random dan /dev/urandom cukup jelas.)
Untuk tujuan menghasilkan "kuki":kuki semacam itu harus sedemikian rupa sehingga tidak ada dua pengguna yang berbagi kuki yang sama, dan secara komputasi tidak mungkin bagi siapa pun untuk "menebak" nilai kuki yang ada. Urutan byte acak melakukannya dengan baik, asalkan menggunakan keacakan dengan kualitas yang memadai (/dev/urandom tidak apa-apa) dan cukup panjang . Sebagai patokan, jika Anda memiliki kurang dari 2 pengguna (n =33 jika seluruh populasi Bumi dapat menggunakan sistem Anda), maka urutan n+128 bit cukup lebar; Anda bahkan tidak perlu memeriksa tabrakan dengan nilai yang ada:Anda tidak akan melihatnya seumur hidup. 161 bit muat dalam 21 byte.
Ada adalah beberapa trik yang bisa dilakukan jika Anda menginginkan cookie yang lebih pendek dan masih ingin menghindari mencari tabrakan di database Anda. Tapi ini hampir tidak diperlukan untuk cookie (saya berasumsi konteks berbasis web). Selain itu, ingatlah untuk menjaga kerahasiaan kuki Anda (mis. gunakan HTTPS, dan setel tanda "aman" dan "HttpOnly" kuki).
Ya, ini cara yang bagus.
Penjelasan @Thomas berhasil. Dan dia sepenuhnya benar untuk mengkritik /dev/urandom halaman manual. Tepat.
Tapi lewati "memeriksa apakah sudah ada". Cek itu tidak ada gunanya. Itu tidak akan terjadi. (Kemungkinan hal itu terjadi lebih rendah daripada kemungkinan tersambar petir -- berkali-kali -- di hari yang sama.)