cybermad
mercredi 7 novembre 2007 à 21:59
Salut,
Tu veux pouvoir sécuriser un accès ? Il y a encore quelques possibilités qui s'offre à toi. J'ai toujours dit que je ferais un tuto pour un accès membre "super sécurisé". J'avais fait un truc pour un site mais je me suis rendu compte de ses faiblesses.
Attention j'ai dit de ses faiblesses, pas de ses failles ;-)
J'avais un site avec un accès membre. Plus tard j'ai voulu ajouter un forum qui conservait la session de mon site internet de façon que, quand un membre se loguait ou sur mon site, ou sur mon forum, il soit logué pour les deux:
=> Malheureusement cela a été impossible. J'ai dû dire au revoir à mon système pour coupler les deux... alors il faut être sûr de ce que tu veux.
Cela dit je suis d'accord à 100% avec destroyedlolo qui dit qu'aucun système n'est infaillible.
Voilà ce que j'avais fait:
- un système login - mot de passe (rien d'extraordinaire pour l'instant ;-)
Mais le mot de passe doit être stocké en MD5 ou autre, ou multiplié par une constante connu de toi seul puis chiffré en MD5...
Au moment de la comparaison, tu effectues les bonnes opérations sur le mot de passe afin de faire la comparaison:
=> sécurité 1: le mot de passe n'est pas stocké en clair dans la bdd.
Le reste de la sécurité vient de la session:
- Tu crées une session avec "session_start();" C'est donc une session au niveau serveur.
=> sécurité 2: si tu fermes le navigateur, bye !
- Tu mets un cookies sur l'ordinateur connecté avec dedans, un identifiant aléatoire généré aléatoirement (40 caractères par ex.). Bien sûr à la connexion tu insères dans une table de ta base de donnée le lien entre cet identifiant et l'ID membre (ou le mot de passe crypté). A chaque mouvement dans l'espace membre, tu vérifie la présence du cookies.
=> sécurité 3: si la personne shoote les cookies pendant sa session: bye !
- Toujours dans la fameuse table du dessus, tu insères l'IP de la personne (récupéré par un $_SERVER["SERVER_ADDR"])
=> sécurité 4: si la personne change de proxi, bye !
Moi je m'étais arrêté au dessus mais tu peux continuer:
- tu peux égayer tout ça en faisant passer une variable de session dans l'url. Variable qui est biensûr différente de toute les autres, toujours stocké dans la fameuse table.
- tu peux pousser le vis jusqu'à changer ta variable de session à chaque chargement de page... à chaque fois mis à jour dans ta bdd.
- tu peux aussi ajouter un timer qui défini une durée de session si inactif pendant 5 minutes par ex.
Chaque exemple est complémentaire, c'est à dire que si une personne prend l'IP (imaginons une famille en réseaux; même IP). Mais il faut le cookies qui est généré à la connexion, s'il existe un cheval de troie (netbus, subseven) et que le frangin pique le cookies..). Il faut qu'il se tape la variable serveur... et si en plus t'a des variables sessions dans l'url là t'es tranquille !
Les failles ? Alors imaginons que la chauve-souris, elle imite la voix d'un copain ;-)
bien sûr si ton visiteur se fait piquer son mot de passe, ou si son mot de passe c'est "monchat", ou "monpoissonrouge" tu peux plus rien pour eux (surtout qu'à 80% des cas on est pas loin de ça). Et si tu te fais pirater ton accès ftp aussi... ou phpmyadmin...
Si tu couples le tout sur un https; c'est le pérou !
Rappel: faut pas vouloir ajouter un forum après sinon tu pleures