安全でない乱数生成

安全でない乱数生成

説明

rand、mt_rand、uniqid、str_shuffle は、セキュリティトークンや認証コードの生成には適していません。

想定される影響

値を予測されると、トークンの推測、認証の回避、セッションの乗っ取りにつながるおそれがあります。

対処方法

セキュリティ用途の乱数には random_bytes または random_int を使います。

例

変更前

php
<?php
$token = uniqid();

変更後

php
<?php
$token = bin2hex(random_bytes(32));

解説:

  • 変更前: セキュリティ上重要なトークンに、予測可能な生成方法を使っています。
  • 変更後: 暗号学的に安全なランダムバイトからトークンを生成します。

参考資料