Aller au contenu

[RESOLU] Sécurisation d'une partie d'un site


Messages recommandés

Salut tout le monde :D

Deux petites questions:

1°) Comment sécuriser au mieux l'accès à une partie d'un site?

Sur mon serveur (php/mysql/sqlite/html...) je souhaite rendre une partie de mon site accessible seulement si on est logué (et autorisé)?

Jusqu'à présent, j'utilisais pour des petites parties privées, la veuille méthode du nom de la page voulue comme accès.

Mais cela n'est pas très pratique, et surtout si on y a accédé on peut faire un favoris pour tomber directement sur la partie réservée.

Là je souhaite un truc me permettant de gérer les utilisateurs autorisés (site interne à une association dans le but de publier des documentations destinées aux seuls membres, un genre d'intranet en fait mais accessible à partir du site public).

Le système des sessions en php est facile à comprendre ?

2°) Comment masquer certaines variables en php?

Pour le moment je triche, avec une clef stockée dans la base mysql, et je fais décoder les variables de page en page.

C'est pas très pratique.

Y-t-il une meilleure solution ? au moins masquer la partie résultat du décodage ?

Merci :D

Lien vers le commentaire
Partager sur d’autres sites

Alors pour le 1°), les sessions en PHP ça n'est pas trop dur à gérer. Ça fait quelques années que je n'y ai plus touché, mais pour ce que je me rappelle en début de code tu appelles session_start() ce qui a pour effet de créer une session ou de te la retrouver si elle existe déjà. Après il suffit de manipuler $_SESSION. Donc tu peux par exemple lorsque l'utilisateur se connecte mettre $_SESSION['connecte'] à true et contrôler cette valeur au début de chaque page protégée. Si c'est false (ou que isset() retourne false), tu rediriges. Bon après tu peux mettre en place des schémas plus compliqués suivant tes besoins.

Il faudrait voir sur PECL ou PEAR s'il n'y a pas des classes ou des modules qui te permettraient de mettre cela en place simplement.

Par contre pour le 2°), j'ai bien peur de ne pas comprendre la question. J'ai un peu du mal à voir ce que tu appelles "masquage de variable" et comment tu l'utilises. :francais:

Lien vers le commentaire
Partager sur d’autres sites

Alors pour le 1°), les sessions en PHP ça n'est pas trop dur à gérer. Ça fait quelques années que je n'y ai plus touché, mais pour ce que je me rappelle en début de code tu appelles session_start() ce qui a pour effet de créer une session ou de te la retrouver si elle existe déjà. Après il suffit de manipuler $_SESSION. Donc tu peux par exemple lorsque l'utilisateur se connecte mettre $_SESSION['connecte'] à true et contrôler cette valeur au début de chaque page protégée. Si c'est false (ou que isset() retourne false), tu rediriges. Bon après tu peux mettre en place des schémas plus compliqués suivant tes besoins.

Il faudrait voir sur PECL ou PEAR s'il n'y a pas des classes ou des modules qui te permettraient de mettre cela en place simplement.

Ok merci :incline:

Par contre pour le 2°), j'ai bien peur de ne pas comprendre la question. J'ai un peu du mal à voir ce que tu appelles "masquage de variable" et comment tu l'utilises. :incline:

En fait, c'est un peu long a expliquer, mais pour faire simple, depuis une page web, lorsque un utilisateur saisi ses ID et pass pour le serveur ftp, les variables (id et pass), apparaissent alors en clair dans le code source de la page et dans l'adresse.

Je triche en utilisant une page intermédiaire qui est la seule a avoir en clair l'ID et le pass, réalise l'action demandée sur le serveur FTP, chiffre l'ID et le pass et redirige vers une page, qui elle n'a que les ID et pass de façon chiffrée.

Bref :D , est-il possible de masquer une partie du code source d'une page (php) pour que par exemple certaines variables n'apparaissent pas dans le code source de la page? Le but étant que l'on ne puisse pas simplement récupérer les ID et pass en lisant le code source de la page générée lorsqu'elle est affichée (et accessoirement, en faisant un favoris de la page où peuvent apparaitre l'ID et le pass). (ps: je sais c'est bordélique comme explication, et j'ai du mal à croire que j'utilise la bonne méthode, mais je débute en php et bricole comme je peux :incline: )

Lien vers le commentaire
Partager sur d’autres sites

Hello,

Oui c'est pas très clair comme explication :pleure:

En fait quand tu parles de code source tu veux parler de la barre d'adresse ?

Parce que dans la source elle même les variables n'ont pas lieu de s'afficher si tu ne le demande pas... (donc voir si y a pas un affichage volontaire de ces variables dans le code source)

Pour ce qui est de la barre d'adresse, tu utilise une methode "GET" ? tu as une adresse style :

http://example.com/fichier.php?id=identifiant&pw=password

Avec les sessions tu pourras faire autrement et éviter d'utiliser un "GET".

En gros avec la section tu auras accès à l'identifiant et mot de passe sans que celui ci s'affiche dans la barre d'adresse.

Je sais pas si j'ai répondu correctement à ta question, si c'est pas le cas désolé ^^

Lien vers le commentaire
Partager sur d’autres sites

Par contre pour le 2°), j'ai bien peur de ne pas comprendre la question. J'ai un peu du mal à voir ce que tu appelles "masquage de variable" et comment tu l'utilises. :pleure:

En fait, c'est un peu long a expliquer, mais pour faire simple, depuis une page web, lorsque un utilisateur saisi ses ID et pass pour le serveur ftp, les variables (id et pass), apparaissent alors en clair dans le code source de la page et dans l'adresse.

Je triche en utilisant une page intermédiaire qui est la seule a avoir en clair l'ID et le pass, réalise l'action demandée sur le serveur FTP, chiffre l'ID et le pass et redirige vers une page, qui elle n'a que les ID et pass de façon chiffrée.

Bref :smack: , est-il possible de masquer une partie du code source d'une page (php) pour que par exemple certaines variables n'apparaissent pas dans le code source de la page? Le but étant que l'on ne puisse pas simplement récupérer les ID et pass en lisant le code source de la page générée lorsqu'elle est affichée (et accessoirement, en faisant un favoris de la page où peuvent apparaitre l'ID et le pass). (ps: je sais c'est bordélique comme explication, et j'ai du mal à croire que j'utilise la bonne méthode, mais je débute en php et bricole comme je peux :pleure: )

Donc si je comprends bien, tu as un formulaire de connexion pour accéder en HTTP au contenu de ton serveur FTP. L'utilisateur soumet le formulaire, et côté serveur ton code PHP génère une page qui contient ces informations, qu'il renvoie au client avec l'instruction de rediriger ensuite vers une autre adresse PHP qui traite ces données et les renvoie protégées par chiffrement. J'ai juste ? Parce que si tel est le cas, je ne vois toujours pas pourquoi tu fais tout ça. :pleure:

Mais je vais essayer de deviner (je suis tenace :smack:) : l'objectif de ton application c'est de permettre aux utilisateurs autorisés d'accéder au contenu du serveur FTP. Donc si tel est bien le cas, ce que tu devrais faire est à la soumission du formulaire de connexion vérifier la validité des données envoyées, stocker ces dernière dans $_SESSION et les réutiliser à partir de là à chaque fois que tu en as besoin. PHP va gérer tout seul un identifiant unique associé à l'utilisateur permettant de reconnaître ce dernier à chaque fois qu'une requête est soumise, te permettant de réutiliser ces informations sans qu'elles aient à quitter le serveur. Si tu utilises Apache configuré par défaut, au bout de 20 minutes d'inactivité la session est détruite (et il faudra alors à l'utilisateur un peu lent se reconnecter).

Bien sûr, pour que la chose soit un peu sécurisée, il faudrait que la connexion au serveur lors de l'identification soit en HTTPS (j'ai jamais pris le temps de voir comment on faisait marcher ça, donc je ne pourrais pas t'aider - mais c'est plus relatif à la configuration de ton serveur web à mon avis), sinon n'importe quelle personne qui a les moyens de sniffer le réseau entre l'utilisateur et le serveur verra passer l'identifiant et le mot de passe en clair. Il faudrait voir quels sont les mécanismes mis en place par PHP pour éviter l'usurpation de session, mais j'imagine que le plus simple pour être sûr d'être en sécurité (suivant ce que tu mets derrière ce mot, tout le monde n'a pas les mêmes contraintes sur ce point) est de garder la connexion en HTTPS durant toute la session.

Lien vers le commentaire
Partager sur d’autres sites

Hello,

Oui c'est pas très clair comme explication :pleure:

Je sais c'est même bordélique dans mon esprit :pleure:

En fait quand tu parles de code source tu veux parler de la barre d'adresse ?

Parce que dans la source elle même les variables n'ont pas lieu de s'afficher si tu ne le demande pas... (donc voir si y a pas un affichage volontaire de ces variables dans le code source)

Non, je parle bien du code source de la page générée ET de la barre d'adresse. L'id et le pass apparaissent si par exemple j'affiche une photo présente sur le serveur, le code source de la page contient l'id et le pass dans le chemin vers la tof.

Pour ce qui est de la barre d'adresse, tu utilise une methode "GET" ? tu as une adresse style :
http://example.com/fichier.php?id=identifiant&pw=password

Voila, comme j'utilise GET pour transmettre l'ID et le Pass, ils apparaissent dans l'adresse de la page (barre d'adresse).

Avec les sessions tu pourras faire autrement et éviter d'utiliser un "GET".

En gros avec la section tu auras accès à l'identifiant et mot de passe sans que celui ci s'affiche dans la barre d'adresse.

Je sais pas si j'ai répondu correctement à ta question, si c'est pas le cas désolé ^^

En fait, j'ai tilté hier après mon message en regardant le tutorial du site du zero. Effectivement tous "mes problèmes" pourraient bien disparaitre à l'aide des sessions php. J'en suis certain pour le "problème" de l'adresse, je dois encore m'en assurer pour le code source d'une page générée. Comme quoi je me doutais que j'utilisais pas une méthode rationnelle :pleure:

Lien vers le commentaire
Partager sur d’autres sites

Donc si je comprends bien, tu as un formulaire de connexion pour accéder en HTTP au contenu de ton serveur FTP. L'utilisateur soumet le formulaire, et côté serveur ton code PHP génère une page qui contient ces informations, qu'il renvoie au client avec l'instruction de rediriger ensuite vers une autre adresse PHP qui traite ces données et les renvoie protégées par chiffrement. J'ai juste ? Parce que si tel est le cas, je ne vois toujours pas pourquoi tu fais tout ça. :pleure:

Mais je vais essayer de deviner (je suis tenace :incline:) : l'objectif de ton application c'est de permettre aux utilisateurs autorisés d'accéder au contenu du serveur FTP.

Malgré mon explication foireuse tu as compris :pleure:

(Y a juste que la page qui travaille avec les variables, redirige son travail terminé vers, une page où les variables (id et pass) ne sont visibles que de façon cryptée).

Donc si tel est bien le cas, ce que tu devrais faire est à la soumission du formulaire de connexion vérifier la validité des données envoyées, stocker ces dernière dans $_SESSION et les réutiliser à partir de là à chaque fois que tu en as besoin. PHP va gérer tout seul un identifiant unique associé à l'utilisateur permettant de reconnaître ce dernier à chaque fois qu'une requête est soumise, te permettant de réutiliser ces informations sans qu'elles aient à quitter le serveur. Si tu utilises Apache configuré par défaut, au bout de 20 minutes d'inactivité la session est détruite (et il faudra alors à l'utilisateur un peu lent se reconnecter).

Oui, je pense que mon bonheur sera aussi du coté des sessions php. :smack:

Bien sûr, pour que la chose soit un peu sécurisée, il faudrait que la connexion au serveur lors de l'identification soit en HTTPS (j'ai jamais pris le temps de voir comment on faisait marcher ça, donc je ne pourrais pas t'aider - mais c'est plus relatif à la configuration de ton serveur web à mon avis), sinon n'importe quelle personne qui a les moyens de sniffer le réseau entre l'utilisateur et le serveur verra passer l'identifiant et le mot de passe en clair. Il faudrait voir quels sont les mécanismes mis en place par PHP pour éviter l'usurpation de session, mais j'imagine que le plus simple pour être sûr d'être en sécurité (suivant ce que tu mets derrière ce mot, tout le monde n'a pas les mêmes contraintes sur ce point) est de garder la connexion en HTTPS durant toute la session.

J'avais regardé cette éventualité, mais je pense que cela n'est pas nécessaire. Le but est surtout que l'utilisateur ne se retrouve pas avec un favoris où sont en clair l'ID et le Pass, et si possible, que s'il enregistre une page, que cet enregistrement ne conserve pas en clair les ID et Pass (dans le chemin d'une photo par exemple ou un pdf...).

Bon ce dernier point, n'est finalement que peu important, c'est surtout le coup du favoris qui était vraiment problématique, et en me confirmant que l'usage des sessions php était la solution, vous m'avez bien aidé. :smack: Merci :pleure:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...