Améliorer la sécurité de Pluxml

bazooka07bazooka07 PluXml Lead Developer, Moderator
avril 2014 modifié dans Modifications
Bonjour,

Le dossier core/lib contient un certain nombre de scripts php appelés par d'autres scripts php.
Ils n'ont donc pas à être accessibles depuis un navigateur Web.
Un fichier .htaccess comme ceci règle ce problème :
[== Indéfini ==]
Order Deny,Allow
Deny from All
Options -Indexes
Sauf que dans ce dossier, il y a quelques scripts javascript nécessaires à l'administration du site.
Une solution facile est de créer un dossier core/js pour y déplacer tous les scripts javascripts et fichiers .txt.
Il suffit ensuite de corriger l'emplacement de ces scripts pour les scripts de core/admin.

On a un problème un peu similaire avec le fichier plain text "version" situé à la racine du site.
Un emplacement plus approprié serait aussi core/lib.

Le même fichier .htaccess ci-dessus peut également être placé dans le dossier data/configuration.
Il n'est pas nécessaire qu'un navigateur est accès aux données de ce dossier donc on bride avec ce fichier .htaccess.

Une fois le site installé, ce fichier version n'est lu que par les scripts contenus dans core/lib :
[== Indéfini ==]
toto@twintech:/home/www/.../temp/PluXml-master$ grep "PLX_ROOT.'version'" core/lib/*.php
core/lib/class.plx.feed.php:		if(!is_readable(PLX_ROOT.'version')) {
core/lib/class.plx.feed.php:		$f = file(PLX_ROOT.'version');
core/lib/class.plx.motor.php:		if(!is_readable(PLX_ROOT.'version')) {
core/lib/class.plx.motor.php:		$f = file(PLX_ROOT.'version');

Il suffit de remplacer PLX_ROOT.'version' par PLX_CORE.'lib/version', une fois le fichier déplacé.

Idem dans install.php et dans update/*.php

Réponses

  • hello

    à mon grand grand amha, modifier autant de fichiers php ( grep -r "PLX_ROOT.'version'" * ), pourrait être intégré dans une prochaine version, car les futures MAJ ne seraient pas simples (tout le monde n'a pas sed ;)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    Protéger les fichiers php du dossier /lib n'améliore pas la sécurité, car les .php ne sont pas lisible dans un navigateur, donc protéger le dossier avec un htaccess c'est juste se faire plaisir. Si leur contenu devenait accessible cela serait un problème avec apache et il y aurait fort à parier que htaccess soit inefficace. Et pour rappel, ceux qui utilise un autre serveur que apache (nginx, lighttpd, hiawatha), .htaccess n'est d'aucune utilité.

    Le fichier version est déjà protégé par le .htaccess à la racine, mais j'avoue pour ce coup qu'il sera plus propre de le mettre dans data/configuration et de profiter du .htaccess de ce dossier. Je prend en compte.

    Pour le 1er point, même si je ne partage pas forcément l'argumentation, ça ne mange pas de pain, et ça ne peut pas faire de mal :)

    edit: issue #70

    /!\ Options -Indexes ne passe pas chez tous les hébergeurs et cause des erreurs 500

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    @Stephane,

    Je vois plus le fichier version dans core/lib que dans data/configuration.
    data/configuration étant réservée à la personnalisation du site.

    Cordialement
  • StéphaneStéphane Member, Former PluXml Project Manager
    @bazooka07: pas faux. d'accord avec toi.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

Connectez-vous ou Inscrivez-vous pour répondre.