|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
Salut tout le monde
Suite au fil Sécurité Total et aux 2 versions de l'espace membre de Sub0. Je vous propose une version d'un espace membre. Il ne contient pas les ajout de sécurité qui ont été étudié dans le fil sécurité total, mais juste le minimum requis. Il ne consiste pour le moment qu'une maquette que j'évolurais au fur et à mesure, mon premier soucis à l'heure actuelle étant son "universalité". Ainsi, je souhaiterais avoir le maximum de retour sur son intégration dans d'autres projets. Il est ecrit en PHP5, orienté objet. Un doc plus complete viendra, mais je laisse le code déjà accessible pour les curieux. demo : http://www.wamania.com/aedituus/index.php5 forum et téléchargement : http://aedituus.wamania.com Wamania
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
00
|
|
|
#2 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Merci, cela servira certainement à plein de monde ^^
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() |
Bonjour tous
Voyons voir cet espace membres. Je ne vous cache pas que c'est surtout le niveau sécurité qui pour moi est trés important. Mais d'abord la découverte. |
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Inscription : mai 2005 Messages : 221 ![]() |
J'ai regardé la demo seulement pour le moment.
C'est plutot bien fait dans l'ensemble, juste un petit détail: Lorsqu'un utilisateur tappe un nom déjà utilisé, il ne le dit pas explicitement mais donne un jolie petit message d'erreur Code :
|
||
|
|
00
|
|
|
#5 | |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
etrange
pourrais-tu me retracer un peu tes manips, car j'ai ressayé et j'obtient bien "Ce pseudo est déjà pris" et j'ai jamais eu ça pdt mes essais. Il faut donc que j'en sache plus pour corriger Citation:
Cependant, il reste encore qqs systèmes que je suis en train de mettre en ce moment. Je devrais sortir une version 2 dans la semaine prochaine . Elle contiendra entre autre une implémentation du Poka-Yoké sur les superglobals (Merci Yogui) une gestion des gds depuis le client jusqu'à la BDD et logiquement (prototype presque fini) une implémentation de l'algo RSA pour cripter dans le sens client vers serveur (pour l'envoie du mot de passe par exemple)
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() |
RE
On met quoi à cette ligne: $cfg['dblink'] = ''; // Ressource de connexion MySQL Et quoi dans la page a proteger,j'ai mis: <?php require('index.php5'); ?> Parce que les Warning et Fatal error bonjour...... Si je regarde l'index direct,ça va,mais sinon!!! |
|
00
|
|
|
#7 |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
l'index est un exemple, il faut reproduire le shéma de l'index, mais pas inclure l'index
tu met rien c'est une initialisation de la ressource MySQL pour lorsque la connexion sera établie. Enfin, vu que j'utilise une classe mtn, ça ne sert plus vraiment
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
00
|
|
|
#8 |
|
Membre habitué
![]() |
RE
Bon OK,mais pour le code a mettre dans la page a proteger,je mets quoi???? C'est le fichier connect qu'il faut appeller? Parle-moi de xhtml ou css (ou meme d'amour ) mais le php je debute EDIT: Si je met connect,voila ce que j'ai: Hack Attack Pour etre protégé c'est protégé Mais on fait comment pour s'enregistrer |
|
00
|
|
|
#9 |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
je vais préparer ce week-end un mini tuto installation, car c'est clair qu'il faut faire certaine chose et ne pas en faire certaines
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
00
|
|
|
#10 |
|
Membre Expert
![]() Étudiant Inscription : février 2004 Messages : 2 168 ![]() |
Deux trucs à te signaler:
- Je trouve ça compliqué d'entrer un "bon" mot de passe (j'ai pas réussî ^^) - Quand je met des apostrophes dans la description, et que je provoque une erreur, celui-ci est échappé au réaffichage, et au bout de X erreurs, j'ai X \ devant l'apostrophe |
|
|
00
|
|
|
#11 | |
|
Membre habitué
![]() |
RE
Citation:
Que dois-je mettre en début de page a proteger???? Juste savoir quel fichier appeller....... |
|
|
00
|
|
|
#12 | |
|
Membre actif
![]() Inscription : mai 2005 Messages : 221 ![]() |
Citation:
Remplie avec ces valeurs: -Pseudo: kalash -Pass: gloups% (serait-ce le '%'? non...) -Mail et MSN: kalash.jako@gmail.com -pas de changement de pays, pas de description, code image correct. De plus, à la fin de chaque page, j'ai un: Ca à la limite, c'est un détail Edit: le compte n'a pas été validé (par mail) je valide et je reteste... |
|
|
|
00
|
|
|
#13 |
|
Membre actif
![]() Inscription : mai 2005 Messages : 221 ![]() |
Affirmatif
Je viens de valider mon compte par email, et le message d'erreur s'affiche |
|
|
00
|
|
|
#14 |
|
Membre habitué
![]() |
RE
Ce serait sympa si quelqu'un pouvait me repondre Que faut-il mettre dans la page ou on veut l'espace. Ou c'est un script réservé aux pros C'est un forum chacun pour soi,non! EDIT: Je suis passé direct pour l'inscription,et il faut mettre une url pour cette m**** de MSN Et on parle de sécurité
|
|
00
|
|
|
#15 | |||||||
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
Salut
Dans l'ordre Citation:
- Pour le \ qui se multiplie, j'ai oublié de retirer un addslashes qui se fait sur tous les $_POST, $_GET. Ce addslashes général est ridicule et je l'ai remplacé par des mysql_real_escape_string aux endroits qui en ont besoin(mais j'ai oublié de le retirer : fichier common.php) Citation:
En gros, dans toutes les pages $user = new CUser(); $user->session_begin(); ça crée la session et l'utilisateur. $user->isConnected() vérifie si le gars est connectés ou pas donc if ( ! $user->isConnected() ) { header('Location: index.php5?page=connect'); } par exemple à noté, comme je l'ai fait dans l'index.php que $user->myVar remplace $_SESSION['myVar'] (ceci sera bien amélioré grâce à la technique du poka-yoké sur ces superglobals) Citation:
Le array à la fin est fait pour montrer quelles propiétés sont accessible Je crois que beaucoup on zappé la principale ligne de mon 1er message Citation:
Citation:
Citation:
Si c'était un forum "chacun pour soi", ce fil n'existerais meme pas. Citation:
Le champ MSN et description ne sont qu'une démo du système de création dynamique de champ de formulaire. En gros, une table dans la base, une ligne par champ, avec les colonnes obligatoire ou non, quel type de test pour le champ, quel type de champ (dispo à l'heure actuelle : text, password, textarea et select). Suffit de supprimer le ligne MSN pour supprimer ce champ. La création/gestion de ces champs se fera par une page d'admin dans une futur version. mais peut se faire directement dans la table. j'avoue qu'une adresse MSN obligatoire pour un espace membre.... ![]() Bon, je corrigerais tout ça et reproposerais une version (et mettrais à jour le démo Mais là.....c'est le week-end. a+
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|||||||
|
00
|
|
|
#16 |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
Salut tout le monde
Une nouvelle version est en démo, elle n'est pas en téléchargement car on peut meme pas dire que c'est du béta, mais comme vos premieres remarques m'ont déjà bien aidé à supprimer de rééls problèmes, je continue sur le modèle. Les bugs (ou incohérences) corrigés sont
J'ai ajouté une implémentation du cryptage RSA, en utilisant coté PHP la classe de PEAR, et coté javascript, un script que j'ai écris en m'appuyant sur une classe de gestion des "arbitrary precision number" appelée simplement BigInt ça tourne bien en 256bits, ça peine un peu en 512bits, ça ne passe pas en 1024bits. Etant donnée que c'est le cryptage (donc coté javascript) qui prend le plus, je pense que je vais travailler à l'économie de ressource sur ces fonctions, pour monter au moins aux 512bits sans soucis. Ce cryptage ne se fait pour le moment que sur le mot de passe lors de l'inscription. Je suis ouvert à toute idée d'amélioration et je tiens le script à disposition des curieux (par MP seulement) démo : http://www.wamania.com/aedituus/index.php5
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
00
|
|
|
#17 | ||
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
ç'est normal d'avoir ça sur la page ?
Code :
__________________
C'est pas parce que j'ai tort que vous avez raison. |
||
|
|
00
|
|
|
#18 |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
oui, comme je l'ai dit, c'est une version de démo pour développeur
Je vais clarifier un peu, car je pense que j'ai pas été très clair jusqu'à maintenant. L'Aedituus est en plein développement. Il est utilisable, mais pas encore sûr (pas fini et pas assez de retour sur ce qui est fait). Je fournis une démo et les scripts pour test et débugguage ou simplement pour nourrir les curiosités Ceux qui veulent l'utiliser dès maintenant le peuvent, mais à leur risque (à mon avis, à ce stade, l'Aedituus est plus sécurisé que 75% des scripts qui trainent sur le net). Après réflexion, et face à tout ce que j'ai prévu d'y faire, je n'écrirait pas de doc pour le moment, et je n'assurerais pas le support pour une installation "finale", mais je me ferais un plaisir d'éclaircir les points obscures permettant sa compréhension. Pour info, ces 2 tableaux montrent à chaque stade le contenu de la session et de l'objet user |
|
00
|
|
|
#19 |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
Salut tout le monde
Nouvelle version en démo www.wamania.com/aedituus/index.php5 - Meilleur gestion des quotes afin d'éviter tout slash indésirable dans la base - Utilisation des Exceptions pour gérer les erreurs "utilisateurs" (mauvais mot de passe, hack divers..) - Utilisation d'une classe de filtrage pour $_POST et $_GET utilisant le principe du Poka-Yoké (merci à Yogui pour l'astuce) et empechant notamment les attaques par XSS (ce qui n'était pas vraiment le cas avant) - Implémentation d'un Hash javascript pour le mot de passe à la connexion. Un GDS est ajouté et est propre à chaque membre. Le script va chercher par AJAX le GDS correspondant à la saisie (evite l'envoie de 2 formulaires : login puis mot de passe). La connexion fonctionne en mode normal si JS est désactivé. - réécriture du code de l'image anti-robot lors de l'inscription (l'image précédente était peu lisible). J'ai utilisé le très bon code PHP5 du site http://classes.scriptsphp.net:81 - modification du système anti force brute. Je trouve le système de blocage au bout de 3 erreurs un peu lourd, autant en code qu'en utilisation. A la place, j'ai mis un timer réglable qui fixe le temps minimum entre 2 tentatives. - Correction d'un gouffre de sécurité lors de l'envoie des mails d'activation et de récupération de mot de passe. Voila pour les principaux changements. Je tiens tjs à disposition le script par simple MP Wamania |
|
00
|
|
|
#20 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Salut Wanamia,
Quelques questions : 1) On peut en savoir plus sur la nature de ce gouffre de sécurité lors de l'envoi d'email de confirmation ? 2) ainsi que sur la classe de filtrage pour $_POST et $_GET utilisant le principe du Poka-Yoké anti XSS ? 3) C'est quoi ça : Pour info : votre clé publique de chiffrement (128 bits): 263048463986068308354594346418065157207, 65537 . J'ai rien pigé au système. 4) C'est pas un peu contradictoire de faire un système de mot de passe haut de gamme et d'en filer le code à tout le monde ? ==> Le coup d'obliger de renseigner son msn c'est pas possible ça, si je veux pas ou si j'en ai pas tout simplement ? ==> J'ai trouvé très esthétique les lettres à recopier c'est plutot rare.
__________________
C'est pas parce que j'ai tort que vous avez raison. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com