Достаточно ли безопасный токен random_bytes и насколько правильно использовать его через $_SESSION PHP

У меня есть вот такая генерация токена:

function str_rand(int $length = 64){ // 64 = 32
   $length = ($length < 4) ? 4 : $length;
   return bin2hex(random_bytes(($length-($length%2))/2));
}
$_SESSION['token'] = str_rand();

Достаточно ли безопасен этот токен? Или лучше вот это:

if (!isset($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
$token = $_SESSION['csrf_token'];

И что лучше использовать, куки, или же сессию?

И еще один побочный вопрос... Как я понял, если я пользуюсь ajax, то мне надо передавать этот токен через ajax запрос, а потом проверять, действительно ли этот токен равен токену с сервера:

if ($_POST["token"] == $token) {}

Ну и + ко всему, надо записывать в meta tag этот самый $token. Я всё правильно понимаю??


Ответы (0 шт):