安全生成随机值

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.2,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

安全生成随机值

Symf欧宝娱乐app下载地址ony Security组件提供了一组与安全性相关的实用程序。Symfony使用了这些实用程序,但是如果您想解决它们所欧宝娱乐app下载地址解决的问题,也应该使用它们。

请注意

本文中描述的函数是在PHP 5.6或7中引入的。类提供了一个polyfill欧宝娱乐app下载地址Symfony Polyfill Component

比较字符串

比较两个字符串所需的时间取决于它们的差异。这可以被攻击者使用,当两个字符串表示一个密码,例如;它被称为a计时攻击

比较两个密码时,应该使用hash_equals功能:

1 2 3
如果(hash_equals (knownString,userInput)) {/ /……

生成安全随机字符串

每当需要生成安全的随机字符串时,强烈建议使用random_bytes功能:

1
随机= random_bytes (10);

该函数返回一个随机字符串,适合加密使用,由作为参数传递的字节数组成(在上面的示例中为10)。

提示

random_bytes ()函数返回二进制字符串,该字符串可能包含\ 0的性格。在一些常见的场景中,这可能会导致问题,例如将该值存储在数据库中或将其作为URL的一部分。解决方案是对返回的值进行编码或散列random_bytes ()(要做到这一点,您可以使用简单的base64_encode ()PHP函数)。

生成安全随机数

如果需要生成加密安全的随机整数,则应该使用random_int功能:

1
随机= random_int (1,10);
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。