Una forma fácil y relativamente segura de generar cadenas semi-aleatorias con PHP:
https://gist.github.com/felipelavinz/9656913
Algunas notas:
- Depende de que esté instalada la extensión de OpenSSL, que por lo general ya está disponible. Por ahí mencionan que tiene algunos problemas de performance en Windows… o sea que si estás usando un servidor con Windows, sería uno más de tus problemas 😛
- Al generar la cadena de bytes es posible chequear si se hace de modo “criptográficamente fuerte”, pasando una segunda variable que será definida como booleano.
- En circunstancias normales, el output de openssl_random_pseudo_bytes() es suficientemente aleatorio, pero para aplicaciones específicas donde la seguridad es clave siempre conviene buscar y utilizar librerías más estudiadas y probadas que cualquier solución que uno mismo pudiera implementar.