Rechercher : dans
Par :

Htaccess php crypt(): bijection? suis-je c**?

Dernière réponse le 13 oct 2009 à 20:19:06 ataos, le 13 oct 2009 à 17:38:14 
 Signaler ce message aux modérateurs

Bonjour,
Alors voilà, je code un petit site pour mon plaisir, et j'en suis au moment où je protège mon script de connexion mysql dans un dossier verrouillé par un htaccess + htpasswd ... Sauf que...

1- Lorsque j'utilise le code de m@teo ou un autre pour coder mon mot de passe, il me génère une ligne à mettre dans mon htpasswd. ok.
2- Lorsque j'essaye d'acceder au dossier, il me demande le mot de passe, je le tape en clair dans le formulaire, et ça ne marche pas. Je me renseigne sur google, et je vois de ci de là, que sur wamp en local ça marche pas top (surement faut-il activer something). Ok
2(bis)- Je rajoute donc une ligne avec un mot de passe en claire, et ça marche. Youpi.

3-J'envoie le tout sur mon ftp, je change le 'chemin' dans le htaccess, et là, que je tape le code en clair, ou en codé, ça ne marche jamais.
4-Je fais un 'encryptage' depuis mon hébergeur (des fois qu'ils n'aient pas la même version du chaudron magique que moi) et je récupère pour le même mot de passe, une nouvelle ligne. Je me dit cool j'y suis presque.... Sauf que non.

5-Si je fais x fois la manipulation, je récupère x lignes différentes.... Alors ma question:

Pourquoi:
1- Ca marche pas?
2- Un même mot ne donne pas toujours le même code encrypté?

Merci d'avoir lu tout ça. :)
Hourra à celui qui résoudra mon problème. :D

PS: apparemment mon hébergeur accepte que les mdp soient codés.

Configuration: Windows 7
Firefox 3.5.3

Meilleures réponses pour « htaccess php crypt(): bijection? suis je c**? » dans :
Apache - Les fichiers .htaccess VoirLes fichiers .htaccess sont des fichiers de configuration d'Apache, permettant de définir des règles dans un répertoire et dans tous ses sous-répertoires (qui n'ont pas de tel fichier à l'intérieur). On peut les utiliser pour protéger un répertoire...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

giheller, le 13 oct 2009 à 17:45:42

Bonsoir,

htpassword n'accepte pas les mots de passe codé en local. (idem avec easy Php)
quand au cryptage cela dépend de la clé (monsite dans l'exemple ci dessous

$pass =crypt('root','monsite');

J-L

Répondre à giheller

2

ataos, le 13 oct 2009 à 18:04:41

Merci, mais pour l'instant j'en suis au même point.

Une question me taraude: Comment le serveur peut-il savoir quelle clé j'ai utilisée?
J'ai codé ta solution comme ceci: $pass_crypte = crypt('root','$_POST["pass"]');

Surtout! Pourquoi même lorsque mon mdp est en clair dans le htpasswd cela ne marche-t-il toujours pas?

Je vais cherché du codé de l'encodage de mon fichier crypte.php. Peut être que le post est faussé.

A tout de suite.

Répondre à ataos

3

giheller, le 13 oct 2009 à 18:20:54

Non c'est pas ça

mais c'est ma faute l'exemple n'est pas bien choisi.

$pass_crypte = crypt('$_POST["pass"], 'clé de cryptage');;

ci joint un code qui fonctionne

<html>
<head>
<link rel="stylesheet" type="text/css" href="../css/sage.css" media="all">
<title>Administration</title>
</head>
<?php
if (isset($_POST['login']) AND isset($_POST['pass']))
{
if ($_POST['login']=='' or $_POST['pass']=='') {
echo "Login ou mot de passe non renseigné";
}
else {
$login = $_POST['login'];
$pass_crypte = crypt($_POST['pass']); // On crypte le mot de passe

// vérifier si le login n'existe pas en table
$existe= false;
if (!$fp = fopen(".htpasswd","r")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
$i=0;
while(!feof($fp)) {
// On récupère une ligne
$ligne = fgets($fp,255);
$zone = explode(':',$ligne);
if ($login == $zone['0']) $existe=true;
}
fclose($fp); // On ferme le fichier
}
if (!$existe) {
$fp = fopen(".htpasswd","a"); // ouverture du fichier en écriture

$ligne = $login . ':' . $pass_crypte;

fputs($fp, $ligne);
fputs($fp,"\n");
fclose($fp);

echo "<table width='33%'><tr><td><fieldset> <legend>Ajout d'un membre</legend>";
echo "<br>L'utilisateur : ".$login." a été ajouté";
echo "</td></fieldset></tr></table>";
}
else {

echo "<table width='33%'><tr><td><fieldset> <legend>Ajout d'un membre</legend>";
echo "<br>L'utilisateur : ".$login." <font color='red'>existe déjà</font> comme membre";
echo "</td></fieldset></tr></table>";
}
}
?>
<form action='menu.php' name='retour' ><input type=submit value='retour'></form>
<?php
}
?>
</html>

J-L

Répondre à giheller

4

ataos, le 13 oct 2009 à 18:27:18

Je continue de chercher. Je peux mettre n'importe quoi dans la clé de cryptage?

Répondre à ataos

5

giheller, le 13 oct 2009 à 18:34:49

Il faut mettre la même pour la vérification sinon mot de passe + clé ne donne pas la même chose.
J-L

Répondre à giheller

6

ataos, le 13 oct 2009 à 18:48:45

Ha oue c fou. j'avais juste la première partie du code. J'ai du zapper une page dans le tuto. Quelle honte. Je teste et je te dis ça.

Mort de rire, je passe de 4 ligne à tout un script. Mais du coup, en le lisant, tout me semble plus 'compréhensible'.


EDIT: Bon en fait, je ne sais pas si je vais utiliser ton code. Enfin, peut être quant je serais devenu grand. Mais pour l'instant j'aimerai juste utiliser le code de "base". (à moins que j'ai définitivement raté une étape).

Donc voici pour mon htaccess:

AuthName "Page d'administration protégée"
AuthType Basic
AuthUserFile "/home/mon_nom_de_clien/public_html/config_php/.htpasswd"
Require valid-user

Pour mon htpasswd:

ataos:yoDfFJ4ACOjEw
high:yoDfFJ4ACOjEw

(Nottons que je suis au moins content qu'un même mot donne le même code crypté. Tu auras au moins levé ce mystère là. :D)

Répondre à ataos

7

 ataos, le 13 oct 2009 à 20:19:06

Bon, voici comment j'ai réussi (même si je ne suis pas sur d'avoir compris la différence avec ce que j'ai pu faire avant).

1-Vérifier que le transfert de filezilla est en 'type de transfert ASCII'
2-Aller générer une clé avec 'salage' ici (http://www.webmaster-hub.com/publication/Le-fichier-htacces­s.html)
3-Uploader le tout.

Répondre à ataos