在本节中,我们将回顾以下安全问题:
- 生成随机数据
- 加密和解密
- 确认数据完整性
生成伪随机数据(Generating Pseudorandom Data)
伪随机数据在很多情况下都很有用。 例如,当通过电子邮件重置密码时, 您需要生成一个令牌,将其保存到数据库中,并通过电子邮件发送给最终用户, 这反过来又会允许他们证明该帐户的所有权。 这个令牌是独一无二且难以猜测的,否则攻击者可能会预测令牌的值并重置用户的密码。
Yii 安全助手类简单生成伪随机数据:
$key = Yii::$app->getSecurity()->generateRandomString();
加密和解密(Encryption and Decryption)
Yii 提供了便利的帮助功能,使您可以使用密钥 加密/解密 数据。 数据通过加密功能传递,以便只有拥有密钥的人才能解密。 例如,我们需要在数据库中存储一些信息,但我们需要确保只有拥有密钥的用户才能查看它(即使应用程序数据库已被泄露):
// $data 和 $secretKey 从表单中获得
$encryptedData = Yii::$app->getSecurity()->encryptByPassword($data, $secretKey);
// 将 $encryptedData 存储到数据库
随后当用户想要读取数据时:
// $secretKey 从用户输入获得&#