我的目标只是生成临时令牌,如果我使用OAuthProvider::generateToken
或random_bytes
,我会在网址中使用该令牌进行用户识别?
从这些答案:
Generate a single use token in PHP: random_bytes or openssl_random_pseudo_bytes?
和
best practice to generate random token for forgot password
与random_bytes
相比,{7}}似乎是最新更新的PHP 7选项。与openssl_random_pseudo_bytes
相比,它是否相同?
示例:
OAuthProvider::generateToken
答案 0 :(得分:3)
我会选择random_bytes
(如果您使用PHP< 7,则存在具有良好声誉的polyfill,random_compat)。
/dev/urandom
和/dev/random
之间的差异可以忽略不计(可以找到更详细的解释there)。
random_bytes
使用getrandom
系统调用或/dev/urandom
,(source code),而没有强模式的OAuthProvider::generateToken()
似乎回退到某些不安全的实现,如果生成的字符串太短(source code和source code of php_mt_rand
)。因此,random_bytes
优于可用性(没有不安全模式),并且在使用getrandom
系统调用的系统上,因为它应该是首选方法(detailled explanation here)。
另一种结束方式是查看一些广泛使用的库:FOSOAuthServer包,用于Symfony应用程序,uses random_bytes
。
最后但同样重要的是,我相信一些PHP核心功能也会比扩展程序获得更多的审查和更好的支持。