説明
rand、mt_rand、uniqid、str_shuffle は、セキュリティトークンや認証コードの生成には適していません。
想定される影響
値を予測されると、トークンの推測、認証の回避、セッションの乗っ取りにつながるおそれがあります。
対処方法
セキュリティ用途の乱数には random_bytes または random_int を使います。
例
変更前
php
<?php
$token = uniqid();
変更後
php
<?php
$token = bin2hex(random_bytes(32));
解説:
- 変更前: セキュリティ上重要なトークンに、予測可能な生成方法を使っています。
- 変更後: 暗号学的に安全なランダムバイトからトークンを生成します。