getMessage() . "\n"; } // Test 2 : Informations de sécurité de la session echo "\n=== TEST 2 : Informations de sécurité ===\n"; try { $info = secureSession::getSecurityInfo(); echo "✅ Session ID : " . substr($info['session_id'], 0, 10) . "...\n"; echo "✅ Session Name : " . $info['session_name'] . "\n"; echo "✅ HTTPS : " . ($info['is_https'] ? 'Oui' : 'Non') . "\n"; echo "✅ HttpOnly : " . ($info['cookie_params']['httponly'] ? 'Oui' : 'Non') . "\n"; echo "✅ Secure : " . ($info['cookie_params']['secure'] ? 'Oui' : 'Non') . "\n"; echo "✅ SameSite : " . $info['cookie_params']['samesite'] . "\n"; } catch (Exception $e) { echo "❌ Erreur : " . $e->getMessage() . "\n"; } // Test 3 : Génération de tokens CSRF echo "\n=== TEST 3 : Génération tokens CSRF ===\n"; try { $token1 = csrf::generateToken('test-form-1'); $token2 = csrf::generateToken('test-form-2'); echo "✅ Token 1 généré : " . substr($token1, 0, 16) . "...\n"; echo "✅ Token 2 généré : " . substr($token2, 0, 16) . "...\n"; echo ($token1 !== $token2) ? "✅ Les tokens sont différents\n" : "❌ Les tokens sont identiques (problème)\n"; } catch (Exception $e) { echo "❌ Erreur : " . $e->getMessage() . "\n"; } // Test 4 : Validation de token CSRF echo "\n=== TEST 4 : Validation token CSRF ===\n"; try { $testToken = csrf::generateToken('validation-test'); $isValid = csrf::validateToken($testToken, 'validation-test'); echo $isValid ? "✅ Validation token réussie\n" : "❌ Validation token échouée\n"; // Le token devrait être supprimé après validation $isValidAgain = csrf::validateToken($testToken, 'validation-test'); echo !$isValidAgain ? "✅ Token correctement supprimé après validation\n" : "❌ Token pas supprimé (problème)\n"; } catch (Exception $e) { echo "❌ Erreur : " . $e->getMessage() . "\n"; } // Test 5 : Génération HTML pour formulaires echo "\n=== TEST 5 : Génération HTML ===\n"; try { $inputField = csrf::inputField('html-test'); echo "✅ Input field généré : " . htmlspecialchars($inputField) . "\n"; $metaTag = csrf::metaTag('ajax-test'); echo "✅ Meta tag généré : " . htmlspecialchars($metaTag) . "\n"; } catch (Exception $e) { echo "❌ Erreur : " . $e->getMessage() . "\n"; } // Test 6 : Statistiques CSRF echo "\n=== TEST 6 : Statistiques CSRF ===\n"; try { // Générer quelques tokens csrf::generateToken('form-a'); csrf::generateToken('form-b'); csrf::generateToken('form-c'); $stats = csrf::getStats(); echo "✅ Nombre de tokens actifs : " . $stats['count'] . "\n"; foreach ($stats['forms'] as $formName => $info) { echo " - $formName : âge = {$info['age']}s, créé le {$info['created_at']}\n"; } } catch (Exception $e) { echo "❌ Erreur : " . $e->getMessage() . "\n"; } // Test 7 : Nettoyage des tokens expirés echo "\n=== TEST 7 : Nettoyage tokens expirés ===\n"; try { // Tous les tokens ont été créés il y a moins d'1 seconde $removed = csrf::cleanExpiredTokens(1); // Expiration après 1 seconde sleep(2); // Attendre 2 secondes $removed = csrf::cleanExpiredTokens(1); echo "✅ Tokens expirés supprimés : $removed\n"; } catch (Exception $e) { echo "❌ Erreur : " . $e->getMessage() . "\n"; } // Test 8 : Régénération ID de session echo "\n=== TEST 8 : Régénération ID de session ===\n"; try { $oldId = session_id(); $regenerated = secureSession::regenerateId(); $newId = session_id(); echo $regenerated ? "✅ Régénération réussie\n" : "❌ Échec régénération\n"; echo ($oldId !== $newId) ? "✅ L'ID a bien changé\n" : "❌ L'ID n'a pas changé (problème)\n"; echo " Ancien : " . substr($oldId, 0, 10) . "...\n"; echo " Nouveau : " . substr($newId, 0, 10) . "...\n"; } catch (Exception $e) { echo "❌ Erreur : " . $e->getMessage() . "\n"; } // Test 9 : Timeout d'inactivité echo "\n=== TEST 9 : Timeout d'inactivité ===\n"; try { $isValid = secureSession::setInactivityTimeout(30); // 30 minutes echo $isValid ? "✅ Timeout configuré (30 minutes)\n" : "❌ Échec configuration timeout\n"; // Vérifier via la méthode session $checkTimeout = session::checkTimeout(30); echo $checkTimeout ? "✅ Session active (dans le timeout)\n" : "❌ Session expirée\n"; } catch (Exception $e) { echo "❌ Erreur : " . $e->getMessage() . "\n"; } // Test 10 : Variables de session echo "\n=== TEST 10 : Variables de session ===\n"; try { echo "Variables de sécurité présentes :\n"; echo isset($_SESSION['_session_created']) ? "✅ _session_created\n" : "❌ _session_created manquante\n"; echo isset($_SESSION['_session_ip']) ? "✅ _session_ip : {$_SESSION['_session_ip']}\n" : "❌ _session_ip manquante\n"; echo isset($_SESSION['_session_user_agent']) ? "✅ _session_user_agent\n" : "❌ _session_user_agent manquante\n"; echo isset($_SESSION['_session_last_activity']) ? "✅ _session_last_activity\n" : "❌ _session_last_activity manquante\n"; } catch (Exception $e) { echo "❌ Erreur : " . $e->getMessage() . "\n"; } // Résumé final echo "\n" . str_repeat("=", 50) . "\n"; echo "✅ Tests terminés avec succès !\n"; echo "Les fonctionnalités de sécurité sont opérationnelles.\n"; echo str_repeat("=", 50) . "\n"; echo "\n⚠️ N'OUBLIEZ PAS DE SUPPRIMER CE FICHIER EN PRODUCTION !\n";