From 8681ecc6f83507861899a8bcae21850dfc5e61d2 Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 26 Jul 2022 01:47:53 +0200 Subject: captcha --- controller/password.php | 148 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 110 insertions(+), 38 deletions(-) (limited to 'controller/password.php') diff --git a/controller/password.php b/controller/password.php index e739363..e01e4dd 100644 --- a/controller/password.php +++ b/controller/password.php @@ -1,8 +1,8 @@ 'deux', + 3 => 'trois', + 4 => 'quatre', + 5 => 'cinq', + 6 => 'six', + 7 => 'sept', + 8 => 'huit', + 9 => 'neuf', + 10 => 'dix', + }; +} - // au rechargement après saisi +// vérifier qu'on a que des chiffres +function controlCaptchaInput() +{ + //$_POST['captcha'] +} + + +function createPassword() +{ + // paranoïa? + if(isset($_SESSION['admin'])) + { + unset($_SESSION['admin']); + header("Location: index.php"); + exit(); + } + + $captcha = createCaptcha(); + require('view/password.php'); + + $title = 'Bienvenue Melaine Favennec'; + $subHeading = 'Veuillez choisir le mot de passe que vous utiliserez pour gérer le site.'; + + // au rechargement après saisi + if(isset($_POST['motdepasse']) && !empty($_POST['motdepasse']) && isset($_POST['captcha']) && (int) $_POST['captcha'] == $_SESSION['captcha']) + { + // caractères non désirés supprimés // impossible d'entrer un espace ou une tabulation et de valider par erreur - if(isset($_POST['motdepasse']) && !empty($_POST['motdepasse'])) - { - // caractères non désirés supprimés - require('controller/Security.php'); - $password = Security::secureString($_POST['motdepasse']); - $password = removeSpacesTabsCRLF($_POST['motdepasse']); - } + require('controller/Security.php'); + $password = Security::secureString($_POST['motdepasse']); + $password = removeSpacesTabsCRLF($_POST['motdepasse']); + // enregistrement if(isset($password) && $password == $_POST['motdepasse']) { hashNewPassword($_POST['motdepasse']); + unset($_SESSION['captcha']); // nettoyage header('Location: index.php'); } - // 1ère fois + // mot de passe non valable else { - $title = 'Créer un mot de passe'; - $subHeading = 'Veuillez choisir le mot de passe que vous utiliserez pour gérer le site.'; - - require('view/password.php'); - + sleep(1); echo($header); - echo($errorBadCharacters); + echo($errorPassword); echo($formulaireNouveauMDP); - echo($warning); + echo($errorBadCharacters); } - exit(); } + // mauvais captcha + elseif(isset($_POST['captcha']) && (int) $_POST['captcha'] != $_SESSION['captcha']) + { + sleep(1); + echo($header); + echo($errorCaptcha); + echo($formulaireNouveauMDP); + echo($errorBadCharacters); + } + // 1ère fois + else + { + echo($header); + echo($formulaireNouveauMDP); + echo($errorBadCharacters); + //echo($warning); // message pas top + } + + // fois suivante (dispense de nettoyer la variable) + $_SESSION['captcha'] = $captcha[2]; + exit(); } + function connect() { // déjà en mode admin @@ -72,6 +132,7 @@ function connect() } // Ajouter une sécurité par cpatcha avec un "input" supplémentaire + $captcha = createCaptcha(); // Et créer une variable de session pour la réponse au CAPTCHA $title = "Connexion"; @@ -82,20 +143,29 @@ function connect() echo($header); - // bon mot de passe - if(isset ($_POST["motdepasse"]) AND testPassword($_POST["motdepasse"])) + // bon codes (mot de passe et captcha) + if(isset ($_POST["motdepasse"]) && testPassword($_POST["motdepasse"]) && isset($_POST['captcha']) && (int) $_POST['captcha'] == $_SESSION['captcha']) { $_SESSION['admin'] = 1; + unset($_SESSION['captcha']); // nettoyage header('Location: index.php?page=' . $_GET['from']); exit(); } - // mauvais mot de passe - elseif(isset ($_POST["motdepasse"]) AND !testPassword($_POST["motdepasse"])) + // mauvais captcha + elseif(isset($_POST['captcha']) && (int) $_POST['captcha'] != $_SESSION['captcha']) + { + echo($errorCaptcha); + sleep(1); + echo($formulaireConnexion); + } + + // mauvais codes + elseif(isset ($_POST["motdepasse"]) && !testPassword($_POST["motdepasse"])) { // défense aux attaques par force brute // pas parfait, ne marche pas si l'attaquant multiplie les connexions au site - echo($erreurMDP); + echo($errorPassword); sleep(1); echo($formulaireConnexion); } @@ -106,6 +176,10 @@ function connect() echo($formulaireConnexion); } + // fois suivante (dispense de nettoyer la variable) + $_SESSION['captcha'] = $captcha[2]; + + echo($messageDeconnect); echo($footer); } @@ -119,8 +193,6 @@ function changePassword() exit(); } - // Ajouter une sécurité par cpatcha avec un "input" supplémentaire - // Et créer une variable de session pour la réponse au CAPTCHA $title = "Nouveau mot de passe"; $subHeading = "Veuillez saisir votre actuel mot de passe suivi du nouveau."; @@ -137,14 +209,14 @@ function changePassword() // bon mot de passe if(isset($newPassword) && $newPassword === $_POST['nouveauMotdepasse'] - && isset ($_POST["ancienMotdepasse"]) AND testPassword($_POST["ancienMotdepasse"])) + && isset ($_POST["ancienMotdepasse"]) && testPassword($_POST["ancienMotdepasse"])) { // enregistrement et confirmation hashNewPassword($_POST["nouveauMotdepasse"]); echo($message); } // mauvais mot de passe - elseif(isset ($_POST["ancienMotdepasse"]) AND !testPassword($_POST["ancienMotdepasse"])) + elseif(isset ($_POST["ancienMotdepasse"]) && !testPassword($_POST["ancienMotdepasse"])) { // défense aux attaques par force brute // pas parfait, ne marche pas si l'attaquant multiplie les connexions au site @@ -164,7 +236,7 @@ function changePassword() echo($formulaireModifMDP); } - echo($warning); + //echo($warning); echo($footer); } -- cgit v1.2.3