Pluxml imbriqués : pb d'administrations non sécurisées

DRAG@NDRAG@N Member
janvier 2007 modifié dans Bogues
Bonjour Skyline et bonjour à tous,

tout d'abord, un grand coup de chapeau à l'auteur de ce "petit" cms.
C'est bien sûr un compliment quand on parle de Pluxml ;). Bravo Skyline.
Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher.
et je dois dire que la version cms de pluxml me ravi au plus au point ! :P


Pour en venir à mes moutons, je suis en train de créer un petit site de partage de photos utilisant les 2 versions de pluxml (cms et blog). Dans mon cas, le pluxml-cms sert de squelette à un site qui contient plusieurs pluxml-blog :

Pluxml-cms (le fichier index.php est à la racine de mon serveur)
|
+- pluxml-blog 1 (sous-répertoire du serveur contenant index.php du blog1)
|
+- pluxml-blog 2
|
+- pluxml-blog 3


Mon souci concerne la sécurité, et plus précisément l'accès à l'administration de pluxml.
Il semblerait en effet qu'il suffise d'être loggué dans l'un de ces pluxml, quelque soit sa hiérarchie dans ce squelette, pour avoir accès à TOUTES les administrations, y compris celle du pluxml principal.
(par exemple, une fois que l'admin de blog2 est loggué, il peut bien sûr accéder à l'administration de son blog, mais aussi à toutes les autres... :/ )

Ma question : Comment faire pour séparer complètement ces identifications ?
(J'utilise des .htaccess, mais j'aimerai connaître une solution plus "intégrée" à pluxml).

Peut-être que la prochaine documentation "Imbriquer plusieurs Pluxml" de la section bricolage m'aidera.
Si ce n'est pas le cas, merci d'avance pour vos lumières.

Réponses

  • arf...
    Effectivement c'est un petit souci que je n'ai jamais pris le temps de résoudre, promis ça sera corrigé dans la prochaine version.
    Si tu veux bricoler toi-même tu n'as qu'à rajouter une variable dans la session qui précise quel pluxml on est autorisé à administrer.
  • Effectivement, la mise en place d'une "clef" propre à chaque pluxml est très facile à mettre en place.

    Merci Skyline, ça marche impec'.
    Bonne continuation.


    PS : dans le sommaire de la Documentation Pluxml, Signature "intéractive" s'écrit sans accent ;)
  • Bonsoir, il y a un petit moment que je ne suis pas venu et n'ai pas encore eu le temps de lire tous les nouveaux posts, donc si jamais le sujet a déjà été traité, désolé :D

    Juste un replys pour dire que je trouve très interressant la possibilité d'imbriquer plusieurs pluxml, mais que je n'ai aucune idée de comment ça marche, et je pense qu'on est pas mal dans ce cas (je n'en ai pas particulièrement besoin dans l'immédiat, mais ça me sera certainement utile un de ces 4 ;)), et je me demandais si l'un de ceux qui l'ont fait ne pouvait pas nous pondre un petit tuto explicatif puisqu'apparemment ce n'est pas si compliqué que ça, je pense à toi DRAG@N ou a toi Diti par exemple ;)

    Bonsoir !
  • DRAG@NDRAG@N Member
    janvier 2007 modifié
    Salut stoopx,

    juste pour apporter une précision, mon installation de Pluxml imbriqués ne correspondra sans doute pas à tous les usages.
    Dans mon cas en effet, les pluxml imbriqués forment un espace multi-utilisateurs et il n'y a donc pas d'administration commune par exemple (pour cela, il faudra certainement attendre la prochaine documentation de Skyline).

    Pour rappel, un "bogue" permettait jusque-là à n'importe quel administrateur enregistré d'administrer tous les pluxml d'un même serveur.
    Voici les modifications à effectuer pour éviter ces "effets de bord" (en gras, le code à ajouter/modifier) :

    pour Pluxml et Pluxml-blog
    => fichier auth.php (l.15) :

    if(md5($_POST) == $pwd[$_POST]){ # Si login et pwd concordent
    $_SESSION = '1';
    $_SESSION = $_POST;
    $_SESSION = 'clef_admin_1'; # On définit la clef de cette administration
    header('Location: index.php');
    }else{
    $msg = 'Mot de passe incorrect';


    pour Pluxml
    => include.php (l.25) :

    if (empty($_SESSION) or $_SESSION != 'clef_admin_1'){ # Si 'admin' de la session est vide ou si la clef ne correspond pas
    header('Location: auth.php'); # Alors on va s'identifier
    exit;
    }


    pour Pluxml-blog
    => prepend.php (l.27) :

    if((empty($_SESSION) or $_SESSION != 'clef_admin_1') && @!$auth_page){ # Si 'admin' de la session est vide ou clef invalide
    header('Location: auth.php'); # Alors on va s'identifier
    exit;
    }


    Vous l'aurez compris, il suffit donc de remplacer clef_admin_1 par ce que vous voulez, du moment que cette clef est unique.
    Cette méthode permet aussi de définir un admin principal (qui possède tous les droits), en rajoutant un or $_SESSION != 'clef_admin_principal' dans les fichiers concernés de tous les pluxml imbriqués.
    A noter également que des restrictions pourront être faites dans les formulaires d'administration, afin de rendre impossible la modification des chemins des dossiers par les utilisateurs. Pour comprendre, jetez un oeil sur le paramètre "hidden" dans le fichier parametres.php.

    Rappellez-vous que c'est du bidouillage, en attendant que Skyline introduise une telle sécurité dans sa prochaine version.
    Pour ceux qui souhaitent créer une administration commune (dans le cas de Pluxml imbriqués mono-utilisateur), il faudra créer sur la page d'authentification principale un petit menu déroulant associant à chaque choix une clef.. mais je vous laisse bidouiller cela vous même :P.

    Bon pluxml à tous ! ;)
  • Merci de ton partage, en espérant que cela serve ;)
  • Merci :)
Connectez-vous ou Inscrivez-vous pour répondre.