#!/usr/bin/perl use strict; use warnings; use CGI qw(:standard); use CGI::Cookie; use Digest::SHA qw(sha256_hex); # Припустимо, що користувач успішно залогінився my $user_id = 12345; my $username = "yurii"; # Генеруємо унікальний, криптостійкий ідентифікатор сесії my $session_id = sha256_hex( time() . rand() . $$ . $^T . $ENV{REMOTE_ADDR} . $user_id ); # Зберігаємо сесію в базі даних або Redis (тут спрощено) # У реальності: $redis->setex("session:$session_id", 86400, $user_id); # Встановлюємо куку my $cookie = cookie( -name => 'session_id', -value => $session_id, -path => '/', -expires => '+30d', # або '+8h', '+1y' — залежить від політики -secure => 1, # тільки HTTPS (обов’язково!) -httponly => 1, # JavaScript не має доступу — захист від XSS -samesite => 'Lax' # або 'Strict' — захист від CSRF ); print header( -charset => 'UTF-8', -cookie => $cookie ); print "

Ви успішно увійшли як $username

";