hi!

because i use galette-sport for a federation, i wanted to secure the
passwords, so i have modified some files

maybe you are intersted by that work, so i send you the "how-to" file!


Bonjour!

j'utilise galette pour gérer les adhérents d'une fédé, et j'ai remarqué que
les mots de passe n'étaient pas cryptés, alors j'ai fait les modifs
nécessaires pour que tout fonctionne, avec des mots de passe en md5, et non
en clair!

je vous envoie le "how-to", si vous y trouvez des bugs dites le moi! (j'ai
testé sur galette sport 0.62.2 avant install, et après install)

le deuxieme fichier est pour coder tous les mdp de la base de donnée.

à bientôt!

-- 
Gaël

Cette adresse email fonctionne aussi avec MSN Messenger! ([EMAIL PROTECTED])

Attachment: pass2md5.php
Description: Binary data

ajout du codage des mots de passe dans galette-sport
par gagou9 - [EMAIL PROTECTED]


for english poeple : ouvrir means open, chercher means find, remplacer par 
means replace by and fermer means close!


[ouvrir] ./install/index.php

[chercher] 
 $default = "INSERT INTO ".$_POST["install_dbprefix"]."preferences VALUES 
(19,'pref_admin_pass',".$DB->qstr($_POST["install_adminpass"]).")";

[remplacer par] (on rajoute md5([...]) )
 $default = "INSERT INTO ".$_POST["install_dbprefix"]."preferences VALUES 
(19,'pref_admin_pass',".$DB->qstr(md5($_POST["install_adminpass"])).")";

[fermer] ./install/index.php            



[ouvrir] ./install/sql/mysql.sql

[chercher]
        mdp_adh varchar(20) NOT NULL default '',

[remplacer par]
        mdp_adh varchar(32) NOT NULL default '',

[fermer] ./install/sql/mysql.sql




[ouvrir] ./install/sql/pgsql.sql

[chercher]
        mdp_adh character varying(20) DEFAULT '' NOT NULL,

[remplacer par]
        mdp_adh character varying(32) DEFAULT '' NOT NULL,

[fermer] ./install/sql/pgsql.sql





[ouvrir] ./ajouter_adherent.php

[chercher]
 elseif ($fieldname=="mdp_adh")
        {
                if (strlen($post_value)<4)
                        $error_detected .= "<LI>"._T("- Le mot de passe doit 
être composé d'au moins 4 caractères !")."</LI>";
                else
                        $value = $DB->qstr($post_value, true);
        }

[remplacer par] (on rajoute md5([...]) et on change la détéction de la taille)
 elseif ($fieldname=="mdp_adh")
 {
        if (strlen($post_value)==0) { // si le mdp n'a pas été renseigné, il 
doit être inchangé
                // du coup c'est un peu relou... m'enfin
                $req = "SELECT mdp_adh FROM ".PREFIX_DB."adherents WHERE 
id_adh='".$id_adh."'";
                $result = &$DB->Execute($req);
                $mdp_adherent = $result->fields[0];
                $value = $DB->qstr($mdp_adherent, true);
        }
        else {
                if (strlen($post_value)<4) //si le mdp a ete renseigne (donc 
nouveau mdp)
                        $error_detected .= "<LI>"._T("- Le mot de passe doit 
être composé d'au moins 4 caractères !")."</LI>";
                else
                        $value = $DB->qstr(md5($post_value), true);
        }
 }

[chercher]
        <TH id="libelle" <? echo $mdp_adh_req ?>><? echo _T("Mot de passe :"); 
?>

[remplacer par]
        <TH id="libelle" <? echo $mdp_adh_req ?>><? echo _T("<b>Nouveau</b> mot 
de passe :"); ?>

[chercher]
        <TD><INPUT type="text" name="mdp_adh" value="<? echo $mdp_adh; ?>" 
maxlength="<? echo $mdp_adh_len; ?>">

[remplacer par]
        <TD><INPUT type="text" name="mdp_adh" value="" maxlength="<? echo 
$mdp_adh_len; ?>">

[fermer] ./ajouter_adherent.php




[ouvrir] ./voir_adherent.php

[chercher]
        <TD bgcolor="#EEEEEE"><? echo $login_adh; ?></TD>
        <TD bgcolor="#DDDDFF"><B><? echo _T("Mot de passe :"); ?></B>&nbsp;</TD>
        <TD bgcolor="#EEEEEE"><? echo $mdp_adh; ?></TD>
</TR>

[remplacer par]
        <TD bgcolor="#EEEEEE" colspan="3"><? echo $login_adh; ?></TD>
</TR>

[fermer] ./voir_adherent.php






[ouvrir] ./index.php

[chercher]
        if ($_POST["login"]==PREF_ADMIN_LOGIN && 
$_POST["password"]==PREF_ADMIN_PASS)

[remplacer par]
        if ($_POST["login"]==PREF_ADMIN_LOGIN && 
md5($_POST["password"])==PREF_ADMIN_PASS)

[chercher]
        AND mdp_adh=" . txt_sqls($_POST["password"]);

[remplacer par]
        AND mdp_adh=" . txt_sqls(md5($_POST["password"]));

[fermer] ./index.php





[ouvrir] ./lostpassword.php


[chercher]
        if(     $email_adh!="" )
                {
                        $req = "SELECT mdp_adh from ".PREFIX_DB."adherents 
where login_adh=".txt_sqls($login_adh);
                        $result = &$DB->Execute($req);
                        if (!$result->EOF)
                                $mdp_adh = $result->fields[0];
                        $mail_subject = _T("Vos identifiants Galette");
                        $mail_text =  _T("Bonjour,")."\n";
                        $mail_text .= "\n";
                        $mail_text .= _T("Quelqu'un (sûrement vous) a demandé 
que l'on vous renvoie votre mot de passe.")."\n";
                        $mail_text .= "\n";
                        $mail_text .= _T("Veuillez vous identifier à cette 
adresse :")."\n";
                        $mail_text .= 
"http://".$_SERVER["SERVER_NAME"].dirname($_SERVER["REQUEST_URI"])."\n";
                        $mail_text .= "\n";
                        $mail_text .= _T("Identifiant :")." 
".custom_html_entity_decode($login_adh, ENT_QUOTES)."\n";
                        $mail_text .= _T("Mot de passe :")." 
".custom_html_entity_decode($mdp_adh, ENT_QUOTES)."\n";
                        $mail_text .= "\n";
                        $mail_text .= _T("A très bientôt !")."\n";
                        $mail_text .= "\n";
                        $mail_text .= _T("(ce mail est un envoi 
automatique)")."\n";
                        $mail_headers = "From: ".PREF_EMAIL_NOM." 
<".PREF_EMAIL.">\n";
                        if(  mail($email_adh,$mail_subject,$mail_text, 
$mail_headers) ) {
                                dblog(_T("Mot de passe envoyé. Login :")." \"" 
. $login_adh . "\"");
                                $warning_detected = _T("Mot de passe envoyé. 
Login :")." \"" . $login_adh . "\"";
                                $password_sent = true;
                        }else{
                                dblog(_T("Un problème est survenu dans l'envoi 
du mot de passe pour le compte :")." \"" . $login_adh . "\"");
                                $warning_detected = _T("Un problème est survenu 
dans l'envoi du mot de passe pour le compte :")." \"" . $login_adh . "\"";
                        }
                }


[remplacer par]
        if(     $email_adh!="" )
                {
                                        //on génère un nouveau mot de passe

                        // Ensemble des caractères utilisés pour le créer
                        
$cars="azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789";

                        // Combien on en a mis au fait ?
                        $wlong=strlen($cars);

                        // Au départ, il est vide ce mot de passe ;)
                        $nouv_pass="";

                        // Combien on veut de caractères pour ce mot de passe ?
                        $taille=8;

                        // On initialise la fonction aléatoire
                        srand((double)microtime()*1000000);

                        // On boucle sur le nombre de caractères voulus
                        for($i=0;$i<$taille;$i++){
                                // Tirage aléatoire d'une valeur entre 1 et 
wlong
                                $wpos=rand(0,$wlong-1);
                                // On cumule le caractère dans le mot de passe
                                $nouv_pass=$nouv_pass.substr($cars,$wpos,1);
                                // On continue avec le caractère suivant à 
générer      
                        }


                        $mdp_adh = $nouv_pass;

                        // et on mets le nouveau pass dans la base de donnees
                        $requete = "UPDATE ".PREFIX_DB."adherents SET 
mdp_adh='".md5($mdp_adh)."' WHERE login_adh='".$login_adh."'";
                        $res = $DB->Execute($requete);

                        if (!$res) {
                                dblog(_T("Un problème est survenu dans la 
modification du mot de passe pour le compte :")." \"" . $login_adh . "\"");
                                $warning_detected = _T("Un problème est survenu 
dans la modification du mot de passe pour le compte :")." \"" . $login_adh . 
"\"";
                        }
                        else {
                                $mail_subject = _T("Vos identifiants Galette");
                                $mail_text =  _T("Bonjour,")."\n";
                                $mail_text .= "\n";
                                $mail_text .= _T("Quelqu'un (sûrement vous) a 
demandé que l'on vous envoie un nouveau mot de passe.")."\n";
                                $mail_text .= "\n";
                                $mail_text .= _T("Ce mot de passe a été généré 
aléatoirement, vous pouvez le changer en modifiant votre fiche adhérant.")."\n";
                                $mail_text .= "\n";
                                $mail_text .= _T("Veuillez vous identifier à 
cette adresse :")."\n";
                                $mail_text .= 
"http://".$_SERVER["SERVER_NAME"].dirname($_SERVER["REQUEST_URI"])."\n";
                                $mail_text .= "\n";
                                $mail_text .= _T("Identifiant :")." 
".custom_html_entity_decode($login_adh, ENT_QUOTES)."\n";
                                $mail_text .= _T("Mot de passe :")." 
".custom_html_entity_decode($mdp_adh, ENT_QUOTES)."\n";
                                $mail_text .= "\n";
                                $mail_text .= _T("A très bientôt !")."\n";
                                $mail_text .= "\n";
                                $mail_text .= _T("(ce mail est un envoi 
automatique)")."\n";
                                $mail_headers = "From: ".PREF_EMAIL_NOM." 
<".PREF_EMAIL.">\n";
                                if(  mail($email_adh,$mail_subject,$mail_text, 
$mail_headers) ) {
                                        dblog(_T("Mot de passe envoyé. Login 
:")." \"" . $login_adh . "\"");
                                        $warning_detected = _T("Mot de passe 
envoyé. Login :")." \"" . $login_adh . "\"";
                                        $password_sent = true;
                                }else{
                                        dblog(_T("Un problème est survenu dans 
l'envoi du mot de passe pour le compte :")." \"" . $login_adh . "\"");
                                        $warning_detected = _T("Un problème est 
survenu dans l'envoi du mot de passe pour le compte :")." \"" . $login_adh . 
"\"";
                                }
                        }
                }



[chercher]
        <INPUT type="submit" name="lostpasswd" value="<? echo _T("Envoyez-moi 
mon mot de passe"); ?>">

[remplacer par]
        <INPUT type="submit" name="lostpasswd" value="<? echo _T("Envoyez-moi 
un nouveau mot de passe"); ?>">


[fermer] ./lostpassword.php


(english down)


voilà!

si les fichiers que vous avez modifié sont sur un galette non encore installé, 
alors c'est terminé!

si les modifications ont été faîtes sur un galette déjà installé, il faut 
maintenant
encoder tous les mots de passe (admin et adhérents) qui sont stoqués dans la 
base de donnée!


pour ce faire il faut lancer le fichier pass2md5.php !

mais ATTENTION il ne faut le lancer QU'UNE SEULE FOIS !!

si jamais on le lance une deuxieme fois (parce que par exemple, le mdp admin a 
bien été changé, 
mais pas les pass adhérents) ben il mets les md5 des md5.... donc bon c'est 
moyen!


tchops!




ENGLISH


hoppa!
if the files you modified were on a non-installed galette, you have finished 
installing this "mod"
 
if modifications has been made on an already installed and setuped version of 
galette,
you need to encode all passwords stocked in database to md5

just run ONE TIME the pass2md5.php file

if it fails during encoding passwords, look at what have been well done, and 
modify pass2md5.php to prevent re-encoding!

bye!












_______________________________________________
Galette-devel mailing list
Galette-devel@gna.org
https://mail.gna.org/listinfo/galette-devel

Répondre à