session_regenerate_id
funkcja
Generuje nowe ID sesji. Wywołaj po pomyślnym zalogowaniu, żeby zapobiec atakowi session fixation. Z argumentem true usuwa też stary plik sesji.
session_regenerate_id(bool $delete_old_session = false): bool
session_regenerate_id zastępuje bieżące ID sesji nowym, losowym identyfikatorem — bez utraty danych w $_SESSION. To kluczowa ochrona przed atakiem session fixation: napastnik, który znał stare ID, po regeneracji traci dostęp do sesji. Zawsze wywołuj z argumentem true, żeby stary plik sesji został natychmiast usunięty z serwera. Zwraca true w przypadku sukcesu.
<?php
declare(strict_types=1);
session_start();
// ... weryfikacja hasła przez password_verify() ...
// Hasło poprawne — regeneruj ID sesji przed zapisem danych
session_regenerate_id(true); // true = usuń stary plik sesji
$_SESSION['user_id'] = $uzytkownik['id'];
$_SESSION['user_name'] = $uzytkownik['login'];
// wynik: nowe PHPSESSID — stare ID sesji przestaje istnieć