random_bytes

funkcja

Generuje kryptograficznie bezpieczne losowe bajty z CSPRNG systemu operacyjnego. Używaj do tokenów CSRF, kluczy sesji i innych sekretów.

random_bytes(int $length): string

random_bytes zwraca ciąg losowych bajtów z kryptograficznie bezpiecznego generatora (CSPRNG — ang. Cryptographically Secure Pseudo-Random Number Generator) systemu operacyjnego. Wynik jest nieprzewidywalny i nadaje się do generowania tokenów CSRF, soli, kluczy jednorazowych i innych sekretów kryptograficznych.

Nie używaj rand(), mt_rand() ani uniqid() do sekretów — te generatory są przewidywalne i nie nadają się do zastosowań kryptograficznych.

Ponieważ wynik to surowe bajty (mogą zawierać dowolne znaki), zazwyczaj konwertujesz je do czytelnego formatu przez bin2hex() (hex) lub base64_encode() (base64).

<?php
declare(strict_types=1);

// Generowanie tokenu CSRF — 32 bajty = 256 bitów losowości:
$bajty = random_bytes(32);
$token = bin2hex($bajty); // 64-znakowy ciąg hex

echo strlen($token); // wynik: 64
echo $token;         // wynik: np. a3f8c2... (za każdym razem inny)

// Zapis do sesji:
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));

// Alternatywnie base64:
$tokenBase64 = base64_encode(random_bytes(32)); // 44 znaki

// ❌ Nie używaj tych generatorów do sekretów:
// rand()       — przewidywalny, nie kryptograficzny
// mt_rand()    — przewidywalny, nie kryptograficzny
// uniqid()     — oparty na czasie, przewidywalny
📘 Naucz się w lekcji →