Protéger son espace administratif

Invité
Invité n'ayant pas de compte PHPfrance

12 avr. 2006, 00:13

Salut tout le monde !

J'ai un site en php, avec une page index.php, et des variable $_GET pour inclure d'autres pages, vous voyez quoi...

Pour l'administration, j'ai mis toutes les pages dans un dossier "admin" protégé par un htaccess, donc de ce coté là on ne peux pas y entrer.

Mais le problème c'est qu'il est très facil d'acceder à une de ces pages en allant sur l'adresse
index.php?repertoire=admin&page=supression
J'avais penser mettre que si la variable $repertoire = "admin" on tomberait sur une page d'erreur 404, mais la encore on peux facilement accédé aux page en mettant
index.php?repertoire=./admin&page=supression
Et ainsi de suite, il y a plein de solution possible, en allant dans un repertoire quelconque puis revenir en arrière etc.

Alors de quelle manière je pourrais proteger l'administration ? J'ai penser aux sessions, mais comme j'utilise une zone membre sur le site, j'aurais peur qu'il y est une confusion et qu'en se connectant sur le site on aie accès aussi a l'admin. J'avais tenté l'expérience a mes début, et ce qui c'était passé mais surement que c'était du aux peu de conaissance que j'avais. Faudrait que je resseille aujourdui, mais en attendant je suis ouvert a toutes vos propositions.

Merci d'avance...! :D

Eléphant du PHP | 246 Messages

12 avr. 2006, 00:14

Mince désolé ! J'avais pas vu que j'étais pas connecté...

ViPHP
ViPHP | 656 Messages

12 avr. 2006, 01:44

C'est amusant j'ai deviné ton erreur avant même d'avoir fini de lire ton post. C'est l'erreur du débutant de faire quelque chose de semblable à ça :
require ($_GET["page"].".php");
Je te conseil une seule et très puissante solutions :

Réaliser une liste des pages autorisées...
$page = array("membres", "musique");

if (in_array($_GET["page"], $page))
{
    require ($_GET["page"].".php");
}
Il ne faut pas copier coller mon code mais le modifier et l'améliorer car là il manque encore quelques bricoles.

Eléphant du PHP | 209 Messages

12 avr. 2006, 10:31

Le système de pseudo-frames proposé par Ultiny est une bonne chose mais il n'empêche pas quelqu'un d'accéder à tes pages (enfin si j'ai bien compris ton code :oops: ). Il y a un très bon tuto là-dessus sur phpdebutant que voici : http://phpdebutant.org/article68.php

Je te conseille néanmoins d'y ajouter un système de sessions. Si tu as peur de t'emmêler, crée un index dans ta page admin qui servira à se connecter. Ensuite, tu protèges la connexion par des htmlspecialchars, str_replace, mysql_real_escape_string etc. et tu enregistres tes variables session sous la forme $_SESSION['a_login'] etc.

Le problème est que cela nécessite de se connecter deux fois je pense. N'oublies pas de faire attention à ne laisser entrer que les admins.

J'ai fais ceci sur mon site et j'en suis plutôt content. Ca n'empêchera pas quelqu'un qui veut entrer au panneau admin certes mais ça en rebutera quelques uns.

Eléphant du PHP | 246 Messages

13 avr. 2006, 19:00

Merci de m'avoir répondu, voilà ce que j'utilise comme script :
<?php
$domaine = ((isset($_GET['dom']))?trim($_GET['dom'], '/'):'.');

if(isset($_GET['pge']) && file_exists($domaine.'/'.$_GET['pge'].'.php'))
  include($domaine.'/'.$_GET['pge'].'.php');
else
  include 'accueil.php';
  }
  
Le problème c'est que mes pages d'admnistration sont sur le meme serveur donc on peux les afficher comme si c'était des pages normales.

Je pense que ce qui serait le mieux sécurisé c'est de faire une liste des pages autorisé comme l'a dit Ultiny, mais j'ai un "grand" site qui a énormément de page, surtout que je le mets très souvent a jour, ca prendrais beaucoup de temps!

Il existe pas plutot une manière de faire "une liste des pages non-autorisé" ? Ca me gènerait moin ^^

Declique
Invité n'ayant pas de compte PHPfrance

14 avr. 2006, 08:19

Bonjour,

Je ne comprends pas bien: le fichier htaccess est en principe efficace quelque soit le moyen que l'on utilise pour accéder à une page du répertoire (accès direct, favori, programme PHP, javascript...)

Le fichier htaccess lui même est il correct ?

Et puis, deux questions évidentes mais qu'il faut quand même se poser:
As-tu quitté et relancé le navigateur avant de faire le test ?
Utilise-tu un serveur Apache (et non pas IIS) ?

Déclique consultants
http://www.declique.com/

Eléphant du PHP | 246 Messages

14 avr. 2006, 13:36

Le fichier .htaccess protège bien le répértoire, mais il n'empêche pas une page d'inclure une page se trouvant dans le réprtoire protégé, du moins je pense puisque là il ne l'empeche pas.

Sinon "As-tu quitté et relancé le navigateur avant de faire le test ? " c'est a dire après avoir mis le htaccess ? Oui je l'ai fait, ça fait déja un moment que je cherche comment faire donc je l'ai fermer bien plus qu'une fois.

"Utilise-tu un serveur Apache (et non pas IIS) ?"
Je connais pas IIS mais je pense que j'ai Apache, vu qu'avec des htaccess je fait de l'url rewriting.

ViPHP
ViPHP | 656 Messages

15 avr. 2006, 18:47

Moi je te conseil de relire mon Post.
J'ai expliqué comment tu pouvait évité que quelqu'un n'inclu tes pages d'administration dans le site principale.

Eléphant du PHP | 246 Messages

17 avr. 2006, 02:58

Moi je te conseil de relire mon Post.
J'ai expliqué comment tu pouvait évité que quelqu'un n'inclu tes pages d'administration dans le site principale.
Oui mais comme mon site a beaucoup de page et que ça me prendrais du temps a mettre a jour, je demandais si il existais une autre facon de faire ?