Sécurité: cacher une partie de l'url

Eléphant du PHP | 193 Messages

14 mars 2007, 10:39

Bonjour à tous!

Nous sommes actuellement sur la partie sécurité de l'administration de notre site.
Lorsqu'une personne veut mettre à jour sa page perso, elle accède à un formulaire avec une url de type:
http://www.monsite.com/client-modificat ... m-fiche=45
L'accès à cette fiche est limité par une restriction, qui vérifie le nom d'utilisateur. Cependant, si seulement les clients enregistrés sont autorisés à voir ce type de page, ils peuvent voir et modifier les pages des autres clients en modifiant le nombre présent à la fin de l'url.

- Comment passer le lien par une autre méthode que la méthode GET? (POST?)
- Ou comment cacher une partie de l'url (numéro de fiche)?
- Sinon, comment restreindre l'accès à une catégorie d'utilisateurs en vérifiant en plus que le login et mot de passe correspondent bien à l'id client?

Merci d'avance pour tous vos conseils!!

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

14 mars 2007, 10:43

Le plus simple est sans doute d'utiliser les variables de session
qui, après identification de l'internaute, ne lui donneront accès qu'à sa fiche.

La méthode POST est certes plus discrète que la méthode GET,
mais elle ne garantit pas la sécurité des accès et/ou des informations,
car elle est assez facilement contournable.

Eléphant du PHP | 82 Messages

14 mars 2007, 10:43

Salut,

Je pense qu'il y a pas mal de solution...

Ce que tu peux faire c'est utiliser la fonction md5().La fonction existe en PHP et en mySQL.

tu passes le md5 de ton num-fiche en paramètre et tu recherches en sql :

Code : Tout sélectionner

$sql=" SELECT * FROM maTable WHERE MD5(IdMaFiche) = '".$_GET['num-fiche']."'";
++

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 mars 2007, 10:46

Ou plutôt que d'encrypter, tu peux hacher avec un grain de sel qui t'appartient.

C'est toujours mieux de pouvoir lister les ID qui sont appelés ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 193 Messages

29 mars 2007, 09:57

Salut!!

Le MD5 est nickel. On a placé, puis enlevé le grain de sel qui était visible dans la table: le risque était que si un pirate accédait à la table, en voyant le grain de sel, il pouvait retrouver le mot de passe: en même temps, s'il a les accès à la base, qu'est-ce qui l'aurait besoin des accès aux formulaires... :roll:

Merci pour tout!