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Ø |