PHP 7 OAuthProvider VS random_bytes令牌生成

时间:2018-04-03 12:33:17

标签: php security random token

我的目标只是生成临时令牌,如果我使用OAuthProvider::generateTokenrandom_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

1 个答案:

答案 0 :(得分:3)

我会选择random_bytes(如果您使用PHP< 7,则存在具有良好声誉的polyfill,random_compat)。 /dev/urandom/dev/random之间的差异可以忽略不计(可以找到更详细的解释there)。

random_bytes使用getrandom系统调用或/dev/urandom,(source code),而没有强模式的OAuthProvider::generateToken()似乎回退到某些不安全的实现,如果生成的字符串太短(source codesource code of php_mt_rand)。因此,random_bytes优于可用性(没有不安全模式),并且在使用getrandom系统调用的系统上,因为它应该是首选方法(detailled explanation here)。

另一种结束方式是查看一些广泛使用的库:FOSOAuthServer包,用于Symfony应用程序,uses random_bytes。 最后但同样重要的是,我相信一些PHP核心功能也会比扩展程序获得更多的审查和更好的支持。