Page protegée par un mot de pass

jjkd Messages postés 15 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'aimerais savoir si ce code est vraiment sécurisé lorsqu'on l'utilise sur le net
en plus j'aimerais aussi savoir comment le faire sur une page
merci.


<!DOCTYPE html>
	<html>
	<head>
	<meta charset="utf-8" />
	<title>Page index.php</title>
	</head>
		<body>
			<p>Veuillez entrer le mot de passe pour obtenir les codes
			d'accès au serveur central de la NASA :</p>
			<form action="secret.php" method="post">
			<p>
			<input type="password" name="mot_de_passe" />
			<input type="submit" value="Valider" />
			</p>
			</form>
			<p>Cette page est réservée au personnel de la NASA. Si vous
			ne travaillez pas à la NASA, inutile d'insister vous ne trouverez
			jamais le mot de passe ! ;-)</p>
	</body>
</html>



---------------------------------------------------------------------------


<!DOCTYPE html>
<html>
	<head>
	<meta charset="utf-8" />
	<title>page secret.php</title>
	</head>
		<body>
			<?php
			if (isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe'] ==
			"kangourou") // Si le mot de passe est bon
			{
			// On affiche les codes
			?>
			<h1>Voici les codes d'accès :</h1>
			<p><strong>CRD5-GTFT-CK65-JOPM-V29N-24G1-HH28-
			LLFV</strong></p>
			<p>
			Cette page est réservée au personnel de la NASA. N'oubliez
			pas de la visiter régulièrement car les codes d'accès sont changés
			toutes les semaines.<br />
			La NASA vous remercie de votre visite.
			</p>
			<?php
			}
			else // Sinon, on affiche un message d'erreur
			{
			echo '<p>Mot de passe incorrect</p>';
			}
			?>
		</body>
</html>


6 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjoour à tous;

    @jeepee : Le MD5 est fortement déconseillé .. idem pour le SHA1 qui sont facilement contournables désormais.
    A la place, on utilisera les fonctions php : password_hash et password_verify

    @jeepee, @yg_be : Les accolades pour un IF sont utiles lorsqu'il y a plusieurs instructions à réaliser lorsque la condition se vérifie.
    Par exemple
    if(condition){
      echo "un truc";
      echo "un autre truc";
    }
    

    Mais, si une seule action elles ne sont pas requises
      if(condition) 
       echo "truc machin";
    

    Mais pour éviter toute erreur... je conseille fortement de toujours utiliser les accolades.

    @jjkd , si, comme tu le dis, les mots de passe sont changés régulièrement, dans ce cas, utilise une base de données... plutôt que de modifier le code source de la page à chaque fois que tu auras besoin de changer les identifiants
    De plus, il serait bien d'utiliser un couple login/password plutôt que juste un password.
    Sinon, des petits malins pourraient s'amuser à essayer de forcer l'accès à ta page en utilisant des scripts de "force brute" pour cracker le password.

    Et pour finir, vu que tu débutes dans le monde php, voici quelques conseils à appliquer à tes codes :
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    .
    1
    1. jjkd Messages postés 15 Statut Membre
       
      Merçi à tous vos interventions m'ont vraiment éclairés sur plusieurs points .
      Bon dimanche !
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jjkd Messages postés 15 Statut Membre
         
        peux-tu alors marquer la discussion comme résolue?
        0
  2. jee pee Messages postés 9439 Date d'inscription   Statut Modérateur Dernière intervention   9 977
     
    Bonjour,

    Je ne suis pas particulièrement pointu en sécurité, mais tu pourrais a minima remplacer 'kangourou' par sa valeur md5 (2e55b55e3580b47e5155a8374a833a74) pour ne pas le mettre en clair dans le source.
    Après tu testes md5($_POST['mot_de_passe']) == "2e55b55e3580b47e5155a8374a833a74"

    voir d’autres possibilités : https://apprendre-php.com/tutoriels/tutoriel-35-scuriser-les-mots-de-passe-avec-les-hashs-et-les-salts.html

    Pour une saisie du formulaire et son contrôle tout en un, la logique ce serait en début du source de tester si 'mot_de_passe' est renseigné, si oui : contrôle, si non : affichage formulaire qui s’ auto relance.

    0
  3. jjkd Messages postés 15 Statut Membre
     
    Merci je teste pour voir
    0
  4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    je ne sans pas ce que tu veux dire par "sécurisé". en tous cas, les visiteurs n'ont aucun moyen de voir ta source php.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jjkd Messages postés 15 Statut Membre
     
    ok merci
    dans mes recherches je suis tombe sur une vidéos dont j'ai essaye de reproduire le code mais sa ne marche pas lorsque je charge la page je vois:

    ( ! ) Parse error: syntax error, unexpected 'echo' (T_ECHO) in C:\wamp64\www\Tuto\page mdp\index.php on line 22

    pouvez vous m'aider à corriger s'il vous plait

    
    <?php 
    	$motdepasse = 'supraphoenix';
    	// on teste si le formulaire a été bien envoyé
    		if(isset($_POST['envoi'])) {
    	// on verifie que la case mot de passe est valide et non vide
    		if(isset($_POST['mdp']) AND !empty($_POST['mdp'])) {
        // on vérifie que le mot de passe entrée par l'utilisateur est le meme que celui que vous avez défini
    		if($_POST['mdp'] == $motdepasse) {
    			$accessgranted = 1;
    		}
    		  else  
    		{
    			$erreur = 'Attention le mot de passe entrée est erroné';
    		}
    	}	
    		if(!isset($accessgranted)) { ?>
    			
    			<h1>PAGE PROTEGE PAR UN MOT DE PASSE</h1>
    			<hr>
    <?php 
    	
    	if (isset($erreur)) ( echo $erreur; ) 
     ?>	
    
    <form action="" method="post">
    	Veuillez entrer le mot de passe : <br>
    	mot de passe <input type="password" name="mdp">
    	<input type="submit" name="envoi" value="entrez">
    </form>
    
    <?php  	} else
    // debut de la page sécurisée 
    ?>
    
    <h1>PAGE PROTEGE PAR UN MOT DE PASSE</h1>
    
    <?php
    }
    ?>
    
    
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      je pense que tu peux remplacer les deux dernières parenthèses en ligne 23.
      0
      1. jjkd Messages postés 15 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        je ne te suis pas du tout peux tu etre explicit pour moi ? svp
        0
      2. jee pee Messages postés 9439 Date d'inscription   Statut Modérateur Dernière intervention   9 977 > jjkd Messages postés 15 Statut Membre
         
        un bloc d'instruction dépendant du if n'est pas encadré par ( ) mais par .... ;-) tu as plein d'autres exemples dans le source
        0
      3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jjkd Messages postés 15 Statut Membre
         
        tu peux aussi les supprimer, si tu préfères.
        0
  7. jjkd Messages postés 15 Statut Membre
     
    je ne comprends toujours pas
    0
    1. jee pee Messages postés 9439 Date d'inscription   Statut Modérateur Dernière intervention   9 977
       
      if (isset($erreur)) { echo $erreur; }


      @yg_be
      if (isset($erreur))  echo $erreur;
      fonctionne aussi ?

      mais ce code n'est pas terrible, pas lisible sans indentation correcte et on peut penser que lignes 19 et 36 c'est pareil, que
       if(!isset($accessgranted))
      le test devrait être l'inverse ...
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jee pee Messages postés 9439 Date d'inscription   Statut Modérateur Dernière intervention  
         
        les accolades permettent de regrouper plusieurs instructions, on peut les utiliser pour 0 ou 1 instruction.
        le
        if
        n'exige pas d'accolage.
        0