Securité d'une page Internet - PHP - Programmation
Marsh Posté le 23-10-2002 à 18:07:50
Si t'es sur un serveur Apache, tu peux essayer les fichiers .htaccess.
Marsh Posté le 23-10-2002 à 18:20:33
dinbougre888 a écrit a écrit : Voilà g un site mais g certaines pages ki doivent être accessible uniquement o admin comment faire? Pour l'instant j'utilise comme méthode, un formulaire HTML ki va ensuite voir la valeur dans un fichier PHP pour comparer le mot de passe saisie a celui du fichier. Kestions : 1/ Eske y a un moyen facile et mieux ke le formulaire? 2/ Le mot de passe est demandé sur la 1ere page mais pas les suivantes, donc les utilisateurs pourront y accéder mais effectuer aucun traitement car mon script php va les bloquer. Y a-t-il un moyen kil demande le mot de passe si l'user se rend directement sur ce lien sans passer par les liens précédents? 3/ Si l'action 2/ est réalisé comment ne pas redeamnder le mot de passe à l'utilisateur à chaque fois kil se rend sur une page securisé en navigant, il faut ki le saisissent kan il arrive sur le site puis cbon ps : sans cookie serait mieux merci à tout à l'heure, je rentre chez moi |
Comme le dit Toucouch, t'as le .htaccess ce qui sécurise de manière automatique.
Sinon, t'as le système de session (il y a une classe qui le gère dans php version 4 ). Si t'utilise des .php3, tu peux quand même faire ton propre système de session.
Il sufit de demander à l'utilisateur sonn nom d'utilisateur et son mot de passe, tu met ensuite dans une base de donnée (ou un fichier si tu préfaire) une référence du genre : nom ou ID d'utilisateur, numéro de session, l'adresse Ip de son ordinateur, la date/heure d'ouverture de la session (pour donner une duré de validité) et éventuellement une clé aléatoire.
Ensuite, soit t'envois le numéro de session et la clé dans le cookie soit tu les rajoutes dans tout tes liens (a ce moment là, il devra se réidentifié s'il quitte ton site pour y revenir plus tard).
Quand il accéde à une page sécurisé, tu compare son Ip, sa clé et son numéro de session par rapport à ce que t'as dans ta base ou ton fichier. Si c'est bon et que la session est toujours valide, il est logué, sinon, tu lui affiche aucune info d'administration mais tu lui affiche un message comme quoi il doit s'identifier et le lien vers la page où il peut le faire.
Voilà en gros (mais assez détaillé) comment tu peux faire.
Marsh Posté le 23-10-2002 à 19:08:22
Toucouch a écrit a écrit : Si t'es sur un serveur Apache, tu peux essayer les fichiers .htaccess. |
ça m'intéresse mais ça marche comment??? Faut utiliser des cookies?
Marsh Posté le 23-10-2002 à 19:09:01
omega2 a écrit a écrit : Comme le dit Toucouch, t'as le .htaccess ce qui sécurise de manière automatique. Sinon, t'as le système de session (il y a une classe qui le gère dans php version 4 ). Si t'utilise des .php3, tu peux quand même faire ton propre système de session. Il sufit de demander à l'utilisateur sonn nom d'utilisateur et son mot de passe, tu met ensuite dans une base de donnée (ou un fichier si tu préfaire) une référence du genre : nom ou ID d'utilisateur, numéro de session, l'adresse Ip de son ordinateur, la date/heure d'ouverture de la session (pour donner une duré de validité) et éventuellement une clé aléatoire. Ensuite, soit t'envois le numéro de session et la clé dans le cookie soit tu les rajoutes dans tout tes liens (a ce moment là, il devra se réidentifié s'il quitte ton site pour y revenir plus tard). Quand il accéde à une page sécurisé, tu compare son Ip, sa clé et son numéro de session par rapport à ce que t'as dans ta base ou ton fichier. Si c'est bon et que la session est toujours valide, il est logué, sinon, tu lui affiche aucune info d'administration mais tu lui affiche un message comme quoi il doit s'identifier et le lien vers la page où il peut le faire. Voilà en gros (mais assez détaillé) comment tu peux faire. |
oula oula
Euh je sais pas du tout comment fonctionne un cookie et comment manipuler les ip
chui un vré noob en html et php
Marsh Posté le 23-10-2002 à 19:24:21
en fait tu peux faire plus simple.
- tu crees ton formulaire qui demande le login/pass
- tu crees un identifiant de session unique (md5(uniq(rand, etc...)
- tu enregistres dans une base (ou fichier) un truc genre:
id session, valeur
et a chaque page consultee, tu envoies la cle de session en argument.
si celle ci est vide, tu affiches le formulaire.
Marsh Posté le 23-10-2002 à 19:29:31
apolon34 a écrit a écrit : en fait tu peux faire plus simple. - tu crees ton formulaire qui demande le login/pass - tu crees un identifiant de session unique (md5(uniq(rand, etc...) - tu enregistres dans une base (ou fichier) un truc genre: id session, valeur et a chaque page consultee, tu envoies la cle de session en argument. si celle ci est vide, tu affiches le formulaire. |
ok je v tenter ça
Mais comment ça se passe si l'utilisateur quitte la page internet? ce ki est ds la base j'en fais koi?
Marsh Posté le 23-10-2002 à 19:36:57
tu ajoutes un champ de timeout et a chaque nouvelle ouverture de session, tu vides ta base
Marsh Posté le 23-10-2002 à 19:42:31
apolon34 a écrit a écrit : tu ajoutes un champ de timeout et a chaque nouvelle ouverture de session, tu vides ta base |
euh oui mais si y a 1 ot utilisateur avant?
Marsh Posté le 23-10-2002 à 19:47:21
dinbougre888 a écrit a écrit : euh oui mais si y a 1 ot utilisateur avant? |
tu vides que ceux dont le timeout est epuise, reflechis un peu
Marsh Posté le 23-10-2002 à 20:30:22
apolon34 a écrit a écrit : tu vides que ceux dont le timeout est epuise, reflechis un peu |
ok ok
ptite kestion c koi un champ de timeout
Marsh Posté le 23-10-2002 à 20:55:50
tu fous ds le champ le time() de la derniere activité du gars
qd un utilisateur navigue ton site avant l'affichage tu fais une requete qui effacera les enregistrements dont le timeout est > 15min ( c un exemple)
enfin bon cookie + base de données + mot de passe md5 c archi suffisant
Marsh Posté le 23-10-2002 à 20:58:16
Floleb7 a écrit a écrit : tu fous ds le champ le time() de la derniere activité du gars qd un utilisateur navigue ton site avant l'affichage tu fais une requete qui effacera les enregistrements dont le timeout est > 15min ( c un exemple) enfin bon cookie + base de données + mot de passe md5 c archi suffisant |
ouais mais il voulait pas de cookie
enfin ca revient au meme, a peu de choses pres
Marsh Posté le 23-10-2002 à 21:01:18
cookie au moins ça permet de garder l'identification longtemps
alors que les sessions seuls c'est limité
sinon ben le plus simple création d'un .htaccess avec ajout des utilisateurs
Marsh Posté le 23-10-2002 à 21:47:18
meme pas forcement un cookie juste une sessions comme ca si tu te log ailleurs des ke tu fermes le navigateur t'es penard la personne ki repasse derriere n'auras pas les infos pour acceder a l'admin ..
Marsh Posté le 23-10-2002 à 22:00:30
ben cliquer sur un lien pour se deconnecter c'est aussi rapide
et se lgoin tt le temps car la session a expiré c'est
Marsh Posté le 24-10-2002 à 11:19:18
bon la meilleure solution me semble le .htaccess
donc g crée un fichier .htaccess dans mon répertoire pour mes fichier de gestion du site qu'on va appeller "MonRep"
Dans mon fichier .htaccess g
AuthUserFile .FichierDeMotDePasse |
et g un fichier .FichierDeMotDePasse contenant
test:test |
et kan je v sur internet explorer et ke je ve sur mon index.html il m'affiche donc la fenêtre de saisie du login et password mais le pb c ke je saisie test et test mais rien de ne passe
où eske je me suis tropmpé?
Marsh Posté le 24-10-2002 à 11:27:53
Ton fichier .FichierDeMotDePasse doit contenir ton mot de passe ENCODE. En gros, pour créer ce fichier, ne le fais pas via Notepad mais par la commande Apache htpasswd :
htpasswd -c .FichierDeMotDePasse test
Il te demandera le password, tu l'entreras et il écrira ton fichier tout seul.
Marsh Posté le 24-10-2002 à 11:40:40
c pas obligé de le crypter non?
sinon mon fichier de mot de passe ki se trouve ds le même repertoire ke le fichier .htaccess je dois mettre koi ds le fichier htaccess justement concernant le lien? c bien celui ke j'ai mis? ou bien faut ajouter \\ devant
Marsh Posté le 24-10-2002 à 11:47:08
Si, faut qu'il soit crypté. Sinon faut mettre une autre option mais ch'ais pu laquelle. T'as un très bon tutorial rapide là : http://www.sitedeveloper.ws/tutorials/htaccess.htm
Sinon, Google en tapant "htaccess tutorial" dans la recherche te trouvera tout ce que tu veux.
Marsh Posté le 24-10-2002 à 11:48:42
Taiche a écrit a écrit : Si, faut qu'il soit crypté. Sinon faut mettre une autre option mais ch'ais pu laquelle. T'as un très bon tutorial rapide là : http://www.sitedeveloper.ws/tutorials/htaccess.htm Sinon, Google en tapant "htaccess tutorial" dans la recherche te trouvera tout ce que tu veux. |
ok merci
chui déjà sur google et bon bah y a pleins de truc mais parfois un peu compliqué
Marsh Posté le 24-10-2002 à 11:57:00
comment on fait pour créer le fichier de mot de passe?
htpasswd -c .htpasswd username |
je dois le faire où ça?
Marsh Posté le 24-10-2002 à 12:15:39
Côté serveur, en ligne de commande, dans le répertoire où tu veux que ton fichier soit créé. Sinon tu peux aussi spécifier tout seul le répertorie en entier, genre htpasswd -c C:\MonRépertoire\Greuh\.htpasswd test
Marsh Posté le 24-10-2002 à 13:04:06
oué mais je le tape où la ligne de commande?
je vois pas où
Marsh Posté le 24-10-2002 à 14:26:40
...
Alors imaginons que tu sois sous Windows (si t'es sur Unix, j'peux plus rien pour toi). Démarrer -> Exécuter -> cmd
Là, t'as une invite de commandes DOS ou quelque chose approchant. Tu tapes alors C:\RepertoireApache\bin\htpasswd -c C:\RepertoireAProteger\.htpasswd test
Ligne de commande roulèze
Marsh Posté le 24-10-2002 à 14:31:27
chavé pas ke c t ds ce rep
g fait sur le rep où y a le htaccess
Marsh Posté le 23-10-2002 à 18:03:26
Voilà g un site mais g certaines pages ki doivent être accessible uniquement o admin comment faire?
Pour l'instant j'utilise comme méthode, un formulaire HTML ki va ensuite voir la valeur dans un fichier PHP pour comparer le mot de passe saisie a celui du fichier.
Kestions :
1/ Eske y a un moyen facile et mieux ke le formulaire?
2/ Le mot de passe est demandé sur la 1ere page mais pas les suivantes, donc les utilisateurs pourront y accéder mais effectuer aucun traitement car mon script php va les bloquer. Y a-t-il un moyen kil demande le mot de passe si l'user se rend directement sur ce lien sans passer par les liens précédents?
3/ Si l'action 2/ est réalisé comment ne pas redeamnder le mot de passe à l'utilisateur à chaque fois kil se rend sur une page securisé en navigant, il faut ki le saisissent kan il arrive sur le site puis cbon
ps : sans cookie serait mieux merci
à tout à l'heure, je rentre chez moi