Notice: crypt()

Résolu
LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   -  
LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai un fichier .htpasswd qui donne accès à un site. Cela fonctionne bien mais j'ai une erreur. Si vous pouvez me dire pourquoi, je vous remercie.
Notice: crypt(): No salt parameter was specified. You must use a randomly generated salt and a strong hash function to produce a secure hash. in

Voici le script de ma page.
$submit 	= !empty($_POST['submit']) ? $_POST['submit'] : NULL;
	echo '<h1>Donner accès Partitions</h1>';

	if($submit) {
		$login  = trim($_POST["login"]);
		$passwd = trim($_POST["passwd"]);

		// Ecrire dans le fichier des mots de passe
		$hf = fopen("/home/cliquede/partitions/.htpasswd","a+");
		fwrite($hf,"$login:".crypt("$passwd")."\n");
		fclose($hf);
	}

	echo '<form name="setmdp" method="post" action="'.$_SERVER["PHP_SELF"].'" onsubmit="return verif();">';
	echo '<table cellspacing="0" cellpadding="0">';
	echo '<tr><td class="libel">login</td><td class="sais"><input type="text" name="login"></td></tr>';
	echo '<tr><td class="libel">password</td><td class="sais"><input type="text" name="passwd"></td></tr>';
	echo '<tr><td class="libel"> </td><td class="sais"><input type="submit" name="submit" value="Enregistrer" style="margin-top:5px"></td></tr>';
	echo '</table>';
	echo '</form>';

2 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    C'est un "notice" donc juste pour prévenir.
    Dans l'idéal il faut, comme spécifié dans le message d'erreur, ajouter un SALT.
    Il suffit de lire la doc pour savoir comment faire : https://www.php.net/manual/fr/function.crypt.php
    0
  2. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     
    Bonjour
    J'ai essayé de m'inspirer du lien, déjà plus d'erreur mais je ne suis pas sur de moi, pouvez-vous me donner votre avis.
    Je vous remercie
    	if($submit) {
    		$login  	= trim($_POST["login"]);
    		$passwd 	= trim($_POST["passwd"]);
    		$user_input = 'f?,j89-k0.;-!?lqjçs_di3%5a6_4jhfgh';
    		$pass_crypt = crypt($passwd, $user_input);
    		// Ecrire dans le fichier des mots de passe
    		$hf = fopen("/home/cliquede/partitions/.htpasswd","a+");
    		fwrite($hf,"$login: $pass_crypt\n");
    		fclose($hf);
    	}
    
    0