このセクションでは、次のセキュリティに関する事項を検証します。
擬似乱数は多くの状況で役立ちます。たとえば、メールでパスワードをリセットする場合、トークンを生成し、データベースに保存し、エンドユーザーにメールで送信する必要があります。これにより、ユーザーはそのアカウントの所有権を証明できます。このトークンは一意で推測が困難であることが非常に重要です。そうでない場合、攻撃者がトークンの値を予測してユーザーのパスワードをリセットできる可能性があります。
Yii のセキュリティヘルパーを使用すると、擬似乱数の生成が簡単になります。
$key = Yii::$app->getSecurity()->generateRandomString();
Yii は、秘密鍵を使用してデータの暗号化/復号化を行うことができる便利なヘルパー関数を提供します。データは暗号化関数を通過するため、秘密鍵を持っている人だけが復号化できます。たとえば、データベースにいくつかの情報を保存する必要があるが、秘密鍵を持っているユーザーだけがそれを見ることができるようにする必要があります(アプリケーションデータベースが侵害された場合でも)。
// $data and $secretKey are obtained from the form
$encryptedData = Yii::$app->getSecurity()->encryptByPassword($data, $secretKey);
// store $encryptedData to database
その後、ユーザーがデータを読み取ろうとすると
// $secretKey is obtained from user input, $encryptedData is from the database
$data = Yii::$app->getSecurity()->decryptByPassword($encryptedData, $secretKey);
yii\base\Security::encryptByKey() と yii\base\Security::decryptByKey() を使用して、パスワードの代わりにキーを使用することもできます。
データが第三者によって改ざんされたり、何らかの方法で破損したりしていないことを確認する必要がある場合があります。Yii は、2 つのヘルパー関数の形式でデータ整合性を簡単に確認する方法を提供します。
秘密鍵とデータから生成されたハッシュでデータをプレフィックスします。
// $secretKey our application or user secret, $genuineData obtained from a reliable source
$data = Yii::$app->getSecurity()->hashData($genuineData, $secretKey);
データの整合性が侵害されていないかどうかを確認します。
// $secretKey our application or user secret, $data obtained from an unreliable source
$data = Yii::$app->getSecurity()->validateData($data, $secretKey);
タイプミスを見つけたか、このページの改善が必要だと考えますか?
Githubで編集する !
このデータをフォームの非表示フィールドとして渡し、後で確認する場合は、encryptByPassword と decryptByPassword の上に StringHelper::base64UrlEncode と StringHelper::base64UrlDecode 関数を使用してください。 そうしないと、文字列が正しく渡されず、decryptByPassword の値が「false」になります。
コメントするにはサインアップ または ログインしてください。