安全比较字符串和生成随机数

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.5,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

安全比较字符串和生成随机数

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

比较字符串

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

在内部,当比较两个密码时,Symfony使用恒定时间算法;ob娱乐下载,您可以在自己的代码中使用相同的策略stringutil类:

1 2 3 4
使用ob娱乐下载组件安全核心跑龙套stringutil//一些已知的字符串(例如密码)等于一些用户输入?保龄球= stringutil::= (knownStringuserInput);

谨慎

为了避免定时攻击,已知字符串必须是第一个参数,用户输入的字符串必须是第二个参数。

生成安全随机数

每当您需要生成一个安全的随机数时,强烈建议您使用Symfonyob娱乐下载SecureRandom类:

1 2 3 4
使用ob娱乐下载组件安全核心跑龙套SecureRandom发电机SecureRandom ();随机发电机->nextBytes (10);

nextBytes ()方法返回一个随机字符串,该字符串由作为参数传递的字符数组成(在上面的示例中为10)。

当安装OpenSSL时,securerrandom类工作得更好。但是当它不可用时,它会退回到内部算法,需要一个种子文件才能正确工作。只需要传递一个文件名来启用它:

1 2 3 4
使用ob娱乐下载组件安全核心跑龙套SecureRandom发电机SecureRandom (' /一些/道路/ /商店/ / seed.txt ');随机发电机->nextBytes (10);

请注意

如果您正在使用Symfony Frameob娱乐下载work,您可以直接从容器访问一个安全的随机实例:它的名字是security.secure_random

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。