安全比较字符串和生成随机数
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.6,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.3(当前的稳定版本)。
安全比较字符串和生成随机数
Symfob娱乐下载ony的安全组件提供了一系列漂亮的与安全相关的实用程序。这些实用程序使用Symfony,但你也应该使用它们,如果ob娱乐下载你想解决这个问题他们解决。
比较字符串
比较两个字符串的时间取决于他们之间的分歧。这可以被攻击者使用时两个字符串代表一个密码例如;它被称为计时攻击。
在内部,当比较两个密码,Symfony使用常量时间算法;ob娱乐下载您可以在您自己的代码中使用相同的策略由于stringutil类:
1 2 3 4
使用ob娱乐下载\组件\安全\核心\跑龙套\stringutil;/ /是一些已知的字符串(如密码)等于一些用户输入吗?美元bool= stringutil::= (美元knownString,美元userInput);
谨慎
为了避免时间攻击,必须第一个参数已知的字符串,第二个用户输入的字符串。
生成一个安全的随机数
每当你需要生成一个安全的随机数,非常鼓励你使用Symfonyob娱乐下载SecureRandom类:
1 2 3 4
使用ob娱乐下载\组件\安全\核心\跑龙套\SecureRandom;美元发电机=新SecureRandom ();美元随机=美元发电机- >nextBytes (10);
的nextBytes ()方法返回一个随机字符串的字符数作为参数传递(10在上面的例子中)。
当安装OpenSSL SecureRandom类效果更好。但是当它不是可用,回落到内部算法,这需要一个种子文件正常工作。只是通过文件名来启用它:
1 2 3 4 5 6
使用ob娱乐下载\组件\安全\核心\跑龙套\SecureRandom;美元发电机=新SecureRandom (' /一些/道路/ /商店/ / seed.txt ');美元随机=美元发电机- >nextBytes (10);美元hashedRandom= md5 (美元随机);/ /请参见下面的提示
请注意
如果你使用Symfony框架,你可以得到ob娱乐下载一个安全的随机数字生成器通过security.secure_random
服务。
提示
的nextBytes ()
方法返回一个二进制字符串可能包含\ 0
的性格。这可能会导致问题在几种常见的场景中,如将该值存储在一个数据库,或者把它作为URL的一部分。解决方案是散列返回的值nextBytes ()
(要做到这一点,您可以使用一个简单的md5 ()
PHP函数)。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。