ESPACE MEMBRE



Auteur
: SubØ - 02/07/04 - Contact

Cet espace membre, réalisé et testé avec PHP 4.3.2 et Apache 2, permettra de créer une liste d'utilisateurs et d'enregistrer des informations sur ces-derniers... Dans un 1er temps, seul un pseudo et leur email suffiront pour montrer le principe de fonctionnement du système. Mais par la suite, il sera très facile d'ajouter l'enregistrement d'autres informations, comme le nom, le prénom, l'adresse postale, le pays, la date et lieu de naissance, le téléphone, etc... Le système se présente en 4 grandes parties:

Nous verrons rapidement la structure de la table et la liste des paramètres disponibles.
Remerciements

 

 

1. L'INSCRIPTION

Le visiteur doit s'enregistrer comme nouveau membre pour pouvoir accéder aux pages sécurisées du site. Il doit donc s'approprier un login ("pseudo") et un mot de passe. Ces 2 éléments seront fournis par mail. Le visiteur doit donc donner une adresse mail valide où il pourra recevoir ses identifiants. Par la même occasion, cela permet de vérifier que l'adresse donnée par l'utilisateur est bien valide et permettra à l'administrateur de contacter ce membre si nécessaire.

Une
image de code de protection est nécessaire pour protéger le système contre les inscriptions automatiques pouvant être faites par des robots (script qui automatise la saisie du formulaire). L'utilisateur devra saisir le code qui lit dans l'image. La qualité de cette image est volontairement dégradée pour éviter que des systèmes puissent l'utiliser avec un programme de reconnaissance de caractères... Cette protection n'est pas infaillible, loin de là, mais permet de compliquer les choses pour ceux qui voudront contourner la protection. Les images sont au format JPG et sont crées dans le dossier de l'espace membre. Elles sont automatiquement supprimées: Lorsqu'une nouvelle image est crée, toutes les images JPG du dossier qui seront plus veilles de 10 secondes par rapport à l'heure courante seront supprimées.

En ce qui concerne la
saisie du mot de passe, le système offre 2 possibilités: Il propose soit un mot de passe généré aléatoirement, soit un mot de passe choisi par l'utilisateur. Les 2 méthodes présentent chacune leurs avantages et inconvéniants. Par exemple, le mot de passe aléatoire est souvent difficile à retenir. Cela amène souvent l'utilisateur à devoir le noter sur un post'it, et le coller sur le bord du moniteur, ou à devoir chercher et lire le mail contenant les identifiants à chaque nouvelle connexion... L'autre méthode qui consiste à choisir son mot de passe est dangereuse dans la mesure où les utilisateurs choisissent souvent des mots de passe faciles à retenir. En effet, les pirates disposent de "dictionnaires" de mot de passe, leur permettant de trouver rapidement le mot de passe d'un membre si ce-dernier à choisi un mot de passe trop facile. Dans les prochaines versions, je compte ajouter une fonction qui testera la dureté du mot de passe et qui préviendra l'utilisateur lorsque son mot de passe sera trop facile... Dans le cas d'une saisie de mot de passe choisi par l'utilisateur, le formulaire demande la confirmation du mot de passe pour éviter les erreurs de frappe. Ceci est aussi une option suplémentaire que peut définir l'administrateur...

Les mots de passe sont cryptés en
MD5 ou en RSA (au choix) avec l'ajout d'un "grain de sel"...

Une fois l'inscription achevée avec succès, les identifiants du compte sont envoyés par mail, au format "texte-brute". Dans le cas d'un échec d'envoi du mail, le compte est supprimé de la base de donnée et un message d'erreur est affiché à l'écran.
 

EXEMPLE D'EMAIL ENVOYE AU MEMBRE A SON INSCRIPTION

 Bonjour dood!
 
Merci de vous être enregistré, votre compte a été créé le 02/07/04 à 15:04. Vous êtes priés de conserver cet e-mail dans vos archives. Voici les informations concernant votre compte :
 
-----------------------------------------------------
Votre adresse email: dood@hotmail.com
Votre pseudo: dood
Votre mot de passe: zy99xe
-----------------------------------------------------
 
Cordialement.



 

 

2. L'ACTIVATION DU COMPTE

En option, le mail d'inscription peut contenir un hyperlien d'activation qui permettra d'activer le compte. Cette fonctionalité peut s'avérer utile lorsqu'il est nécessaire d'obtenir une adresse mail valide du membre. Si cette option est activée, le visiteur disposera 2 heures à compter de la création du compte pour activer son compte, après quoi, il ne sera pas possible d'activer le compte et le pseudo sera libéré. Ainsi, un autre utilisateur pourra se l'approprier si il le désire... Le script de cet espace membre contient une fonction qui donnera la possibilité à l'administrateur de supprimer les comptes inactivés... Le système intègre une protection contre les activations frauduleuses. En effet, si un utilisateur veut s'inscrire et activer son compte sans le mail, et ainsi pouvoir donner une adresse mail invalide... Au bout de 3 échecs d'activation, le compte est bloqué pour 10 minutes. L'administrateur reçoit un mail l'informant de l'attaque... Le nombre d'échecs successifs et le temps de blocage du compte sont paramètrables.
 

EXEMPLE D'EMAIL D'INSCRIPTION AVEC LIEN D'ACTIVATION

 Bonjour dood!
 
Merci de vous être enregistré, votre compte a été créé le 02/07/04 à 15:04. Vous êtes priés de conserver cet e-mail dans vos archives. Voici les informations concernant votre compte :
 
-----------------------------------------------------
Votre adresse email: dood@hotmail.com
Votre pseudo: dood
Votre mot de passe: zy99xe
-----------------------------------------------------
 
Pour activer votre compte, veuillez cliquer sur ce lien :
http://127.0.0.1/espmem/inscript.php?act=k82hzohqsc5x5as4&log=dood
 
Si l'activation de votre compte échoue, veuillez contacter l'administrateur.
 
Cordialement.



 

3. L'IDENTIFICATION (CONNEXION)

Le membre doit d'identifier pour accèder aux pages sécurisées. Il crée une session. Cette dernière est supprimée au bout de 10 minutes d'inactivité ou si l'IP du membre change. La durée de vie d'une session est paramètrable. Le nombre d'essai de connexion est sécurisé, c'est-à-dire que le membre possède 3 essais pour effectuer la connexion. Au bout de 3 mots de passe invalide, le membre est redirigé sur le formulaire "perte de mot de passe". Si il insiste, le compte est alors bloqué pendant 10 minutes, et l'administrateur reçoit un mail l'informant de cette attaque. En effet, il est probable que des scripts essaient d'obtenir le mot de passe d'un compte en essayant toutes les combinaisons possibles (par "force-brute"). Le nombre maximal d'essais de connexion échouées successivement est paramètrable, ainsi que la durée de blocage du compte. Ce sont les mêmes paramètres d'administration que ceux utilisés pour l'inscription.



 

4. LA PERTE DU MOT DE PASSE

Il n'est pas rare qu'un membre perde son mot de passe, en particulier si celui-ci a été généré aléatoirement. Le membre doit donc pouvoir obtenir un nouveau mot de passe très facilement. En effet, l'administrateur doit-être libérer de cette tâche. Pour sécuriser cette fonction, la base de donnée conserve l'ancien mot de passe et celui-ci reste toujours actif. Prenons l'exemple où un visiteur mal attentionné décide de demander un nouveau mot de passe à la place d'un membre... En faisant cela, ce visiteur enverra un mail de demande de nouveau mot de passe au membre. Sans gravité et sans conséquences pour ce dernier...
 

EXEMPLE D'EMAIL DE DEMANDE DE NOUVEAU MOT DE PASSE ENVOYE AU MEMBRE

Bonjour dood!

Vous recevez cet e-mail parce que vous (ou quelqu'un qui prétend être vous) avez demandé à ce qu'un nouveau mot de passe vous soit envoyé pour votre compte. Si vous n'avez pas demandé cet e-mail, veuillez l'ignorer. Si vous continuez à le recevoir, veuillez contacter l'administrateur. Vous êtes priés de conserver cet e-mail dans vos archives. Voici les informations concernant votre compte :
 
-----------------------------------------------------
Votre adresse email: dood@hotmail.com
Votre pseudo: dood
Votre nouveau mot de passe: ge25ni
-----------------------------------------------------
 
Pour utiliser ce nouveau mot de passe, vous avez besoin de l'activer. Pour cela, veuillez cliquer sur le lien suivant : http://127.0.0.1/espmem/passperdu.php?act=n86ipdguibxwkyc6&log=dood
 
Vous pouvez bien sûr changer vous-même ce mot de passe via votre profil. Si vous rencontrez des difficultés, veuillez contacter l'administrateur.
 
Cordialement.

Dans les prochaines versions, ce système sera amélioré par l'ajout d'une limite du nombre de demande dans le temps...



 

5. LA DECONNEXION

Le membre devra prendre l'habitude de se deconnecter avant de quitter le site. En effet, la session restera valide pendant presque 10 minutes... Ainsi, si un pirate arrive à obtenir l'IP du membre et arrive à récupérer le SID de la session, il pourra alors se connecter à la place du membre et lire et même modifier les données du membre. Mais rassurez-vous, cela n'est pas donné à tous le monde de réaliser ce genre de piratage. De plus, les données enregistrées par le membre sont souvent bénines (nom, prénom, adresse, téléphone, etc...). Mais dans le cas d'une utilisation plus sensible de cet espace membre, l'installation d'une connexion sécurisée avec certificat sera nécessaire (SSL). Avec cette connexion sécurisée, il ne sera plus possible de pirater le système de l'extérieur.

La seule donnée qui pourrait présenter des risques est l'adresse mail du membre. En effet, si le pirate remplace l'adresse mail du membre par une autre, le membre ne pourra plus obtenir de nouveau mot de passe par exemple... Il perdra l'accès du compte ainsi que son pseudo. Il lui restera tout de même la possibilité de contacter l'administrateur pour signaler le problème... Mais par sécurité, la modification de l'adresse mail nécessitera une activation, afin de ne pas pouvoir redéfinir une adresse invalide pour le compte.



 

 



 

7. PARAMETRES

//=============================================================================//
// CONFIG ADMINISTRATION
//=============================================================================//
$site_name      = 'Mon site';               //  Nom de votre site
$email_site     = 'webmestre@monsite.com';  //  Adresse mail du site
$email_admin    = 'sub0_dvp@hotmail.com';   //  Adresse mail de l'admin (cachée)
$sess_name      = 'espmem';                 //  Nom de la session
$sess_timeout   = 600;                      //  Durée de vie de la session (en secondes)
$random_mdp     = !false;                   //  Mot de passe aléatoire ou choix utilisateur
$confirm_mdp    = !false;                   //  Ajoute la confirmation du mot de passe
$cimg_protect   = !false;                   //  Utilisation de l'image de code
$jpg_ext_code   = '.jpg';                   //  Extension pour les images de code
$tmp_dir_code   = '../espmem/';             //  Dossier tmp pour les images de code
$font_code      = '../espmem/code.ttf';     //  Police utilisée pour les images de code
$maxattack      = 3;                        //  Nombre d'echec autorisé avant blocage
$protecttime    = 600;                      //  Durée du blocage (en secondes)
$bypass_act     = !false;                   //  Active le compte après l'inscription
$isdebuging     = false;                    //  Détails des erreurs - Fonction Debug();
$varviewmail    = '';                       //  Variable pour afficher le mail (debug)

if($_SERVER['HTTP_HOST']=='127.0.0.1') $isdebuging=true;



 

8. REMERCIEMENTS

Un grand Merci à tous ceux qui m'ont aidé à réaliser ce projet!
En particulier à Bob, doof, ermelir, j0k3r_n0ir, KoO, Mathix, m@, Rmotte et tous les autres membres du forum!


Cordialement, SubØ