安全比较字符串和生成随机数
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.5,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
安全比较字符串和生成随机数
Symfob娱乐下载ony Security组件提供了一组与安全性相关的实用程序。Symfony使用了这些实用程序,但是如果您想解决它们所ob娱乐下载解决的问题,也应该使用它们。
比较字符串
比较两个字符串所需的时间取决于它们的差异。这可以被攻击者使用,当两个字符串表示一个密码,例如;它被称为a计时攻击.
在内部,当比较两个密码时,Symfony使用恒定时间算法;ob娱乐下载,您可以在自己的代码中使用相同的策略stringutil类:
1 2 3 4
使用ob娱乐下载\组件\安全\核心\跑龙套\stringutil;//一些已知的字符串(例如密码)等于一些用户输入?$保龄球= stringutil::= ($knownString,$userInput);
谨慎
为了避免定时攻击,已知字符串必须是第一个参数,用户输入的字符串必须是第二个参数。
生成安全随机数
每当您需要生成一个安全的随机数时,强烈建议您使用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许可证。