这 随机套餐 由 Stephen Rees-Carter 开发,通过简单的 PHP 帮助程序包生成一系列不同格式的加密安全随机值。创建此包的原因如下:
我在安全审计期间(尤其是在较旧的代码库上)经常遇到的问题是不安全的随机性,通常是在需要安全性的地方。它通常使用某种形式
rand(),经常注入内部md5()生成随机散列,结合str_shuffle()生成新密码,或用于制作一次性密码 (OTP)rand(100_000, 999_999)。
问题是
rand()不是加密安全的,也不是mt_rand(),mt_srand(),str_shuffle(),array_rand(),或 PHP 中可用的其他不安全函数。我们不能简单地声明这些方法不安全,然后放下麦克风,然后走开。相反,我们需要提供安全的替代方案 - 所以而不是简单地说“不要使用rand()这样”,我们可以说“这是一个您可以使用的安全方法”!
以下是您可以使用此随机包执行的操作的一些示例:
随机一次性密码(数字固定长度 OTP)
生成 $length 位数的随机数字一次性密码 (OTP):
$otp
=
随机的
::
一次性密码
(
整数
$length):
细绳
;
对于生成 SMS 或电子邮件验证码的 OTP 很有用。
随机字符串
生成 $length 字符的随机字符串,其中包括启用的字符类型中的字符。默认情况下,它将随机选择字符,并且不保证存在任何特定的字符类型。如果您需要包含每个字符之一,则可以设置 $requireAll = true。
// 主要方法$字符串
=
随机的
::
细绳
(
整数
$长度
=
32
,
布尔值
更低
=
真的
,
布尔值
上部
=
真的
,
布尔值
$数字
=
真的
,
布尔值
符号
=
真的
,
布尔值
$requireAll
=
错误的):
细绳
;
字符串方法还为常见用例提供了很好的包装器:
// 仅限随机字母字母
=
随机的
::
字母
(
整数
$长度
=
32
):
细绳
;// 随机字母数字(字母和数字)标记字符串$token
=
随机的
::
令牌
(
整数
$长度
=
32
):
细绳
;// 随机字母、数字和符号(即随机密码)。$密码
=
随机的
::
密码
(
整数
$长度
=
16
,
布尔值
$requireAll
=
错误的
):
细绳
;// 随机字母数字标记字符串,各块由破折号分隔,易于阅读和输入。$密码
=
随机的
::
虚线
(
整数
$长度
=
25
,
细绳
分隔符
=
'-'
,
整数
$chunkLength
=
5
,
布尔值
混合大小写
=
真的
):
细绳
;
随机排列数组、字符串或集合
安全地洗牌数组、字符串或 Laravel 集合,可以选择保留键。
洗牌
=
随机的
::
随机播放
(
数组|字符串|
\
照亮
\
支持
\
收藏
$values,
布尔值
$preserveKeys
=
错误的):
数组|字符串|
\
照亮
\
支持
\
收藏
;






