Ada Programming $WikiTagline
 

La traduction de cette page est vrifier

PmWiki possde une fonction code dans upload.php qui permet aux utilisateurs de transfrer des fichiers sur le serveur wiki partir d'un navigateur. Ces fichiers peuvent aisment tre rendus accessibles en utilisant un code dans les pages wiki. Cette page dcrit comment mettre en place et configurer les transferts de fichiers.

Quelques notes propos de scurit.

1. Garder l'esprit que permettre aux utilisateurs (anonymement !) de tlcharger des fichiers sur votre serveur web entrane un certain nombre de risques. Le script upload.php a t conu pour minimiser les risques, mais les administrateurs du Wiki devraient tre conscients que le potentiel de vulnrabilits existe, et qu'une mauvaise configuration de l'utilitaire de tlchargement peut aboutir des consquences indsirables.

2. Par dfaut, les utilisateurs autoriss peuvent craser les fichiers tlchargs auparavant, sans possibilit de restaurer la version prcdente de ces fichiers. Si vous ne voulez pas permettre aux utilisateurs d'craser les fichiers dj transfrs, ajoutez la ligne suivante dans votre config.php:

    $EnableUploadOverwrite = 0;

Base de l'installation

Le script upload.php est automatiquement inclus depuis le fichier stdconfig.php si la variable $EnableUpload est active dans config.php. De plus, dans config.php on peut configurer les variables $UploadDir et $UploadUrlFmt pour prciser le dossier o les fichiers devraient tre stocks, et l'URL qui peut tre utilise pour accder ce dossier. Par dfaut, $UploadDir et $UploadUrlFmt suppose que les fichiers seront enregistrs dans un dossier nomm uploads situ dans le rpertoire courant (usuellement celui qui contient pmwiki.php). De plus, config.php devrait aussi contenir le mot de passe par dfaut pour tout tlchargement (voir administration des mots de passe).

Aussi, un fichier config.php de base paramtr pour le tlchargement devrait ressembler a:

    <?php
      $EnableUpload = 1;
      $UploadDir = "/home/john/public_html/uploads";
      $UploadUrlFmt = "http://www.john.com/~john/uploads";
      $DefaultPasswords['upload'] = crypt('secret');
      ## options de configuration additionnelles ici...
    ?>

Pour que les transferts fonctionnent correctement, le dossier dsign par $UploadDir doit tre accessible en criture par le processus du serveur web, et il doit tre situ un endroit publiquement accessible partir du web (par ex., dans un sous-dossier de public_html). L'administrateur du Wiki peut soit crer ce dossier manuellement, ou soit laisser Pmwiki le soin de le crer lorsque celui-ci est excut avec l'option de tlchargement active ($EnableUpload = 1 dans config.php). Pour que PmWiki puisse crer le dossier, (1) changez les permissions du dossier parent 2777, (2) lancer PmWiki avec la fonctionnalit de tlchargement active, (3) vrifiez que le dossier upload est cr, et (4) rtablissez les permissions du dossier parent leur valeur initiale (755 en gnral est une valeur sre).

Par exemple, pour que le dossier upload soit install dans "/home/john/public_html/uploads", il faudrait faire "chmod 2777 /home/john/public_html", lancer pmwiki.php, s'assurer que le dossier upload soit bien cr ("ls /home/john/public_html"), et rtablir les permissions normales du dossier parent ("chmod 755 /home/john/public_html").

Une fois les transferts de fichiers mis en route, les utilisateurs peuvent accder au formulaire des tlchargements en ajoutant "?action=upload" la fin d'une URL normale de PmWiki. Un mot de passe pour effectuer le transfert sera alors demand aux utilisateurs de la mme manire quand d'autres pages requirent un mot de passe pour d'autres permissions (voir mots de passe et administration des mots de passe pour savoir comment tablir des mots de passe sur des pages, des groupes, ou sur le site globalement).

Une autre faon d'accder au formulaire de tlchargement est d'insrer le code "Attach:filename.ext" dans une page existante, o filename.ext est le nom du fichier transfrer. Quand la page est affiche, un '?-lien' est ajout la fin de l'attachement et envoie l'auteur la page des tlchargements.

Par dfaut, PmWiki organise les fichier tlchargs dans des sous-dossiers spars pour chaque groupe. Ceci peut tre changer en modifiant la variable $UploadPrefixFmt.

Restrictions sur les fichiers tlchargs

Le scripte upload.php effectue un certain nombre de vrifications sur un fichier tlcharg avant de l'enregistrer dans le dossier upload. Ces vrifications sont dcrites ci-dessous.

noms de fichier - le nom pour un fichier tlcharg peut tre compos de lettres, de chiffres, de souligns (underscore), de traits d'union et de points et il doit commencer et se terminer par une lettre ou un chiffre.

extension de fichier - seuls les fichiers avec des extensions volontairement approuves telles que ".gif", ".jpg", ".doc", etc. sont autoriss tre transfrer sur le serveur web. Ceci est d'une importance capitale pour la scurit du serveur, car celui-ci pourrait essayer d'excuter ou de traiter spcifiquement des fichiers avec de extensions comme ".php", ".cgi", etc.

taille des fichiers - Par dfaut upload.php limite tous les tlchargements 50K de part la valeur spcifie dans la variable $UploadMaxSize. Aussi pour pousser cette limite de tous les transferts 100K, spcifiez simplement dans local/config.php

    $UploadMaxSize = 100000; 

Cependant, upload.php permet de prciser la taille maximum des fichiers pour chaque type de tlchargement. Ainsi, un administrateur peut restreindre les ".gif" et les ".jpeg" 20K, les ".doc" 200K, et tous les autres la taille indique par $UploadMaxSize. Le tableau de variables $UploadExtSize est utilis pour dterminer quelles sont les extensions valides et quelle est la taille maximum (en octets) pour chaque type de fichier. Par exemple:

    $UploadExtSize['gif'] = 20000;      # limite les fichiers .gif  20K

Paramter une entre zro dsactive compltement le tlchargement d'un type de fichier:

    $UploadExtSize['zip'] = 0;          # interdit le transfert des fichiers .zip

Un autre tableau de variables appel $UploadExts est utilis pour remplir $UploadExtSize avec les extensions qui devraient tre limites la valeur d'$UploadMaxSize. Par dfaut, $UploadExts contient un certain nombre d'extensions de fichier populaires (et srs), mais cela peut tre chang par un administrateur qui voudrait limiter svrement les tlchargements par types. Par exemple:

    $UploadExts = array('gif','jpeg','jpg','png','ppt');  
    $UploadMaxSize = 20000;
    $UploadExtSize['ppt'] = 150000;
    $UploadExtSize['doc'] = 150000;

defini dans local/config.php autorise seulement les fichiers GIF, JPEG et PNG jusqu' 20K, les fichers PowerPoint et Word jusqu' 150K, et interdit tous les autres types.

Deux autres facteurs sont impliqus dans l'affection de la limite de taille des fichiers transfrs. Dans Apache 2.0, la directive LimitRequestBody contrle la taille maximum de tout ce qui est post (les tlchargments inclus). Initialement dans Apache, cette taille est illimite. Pourtant, certaines distributions Linux incluant Red Hat fixent cette limite 512K aussi il peut tre ncessaire de la changer ou de l'augmenter. Pour ce faire il suffit d'diter le fichier config.php localis dans votre dossier de configuration d'Apache (la plupart du temp dans /etc/httpd/conf.d).

PHP lui mme possde deux limites sur les fichiers tlchargs. La premire est le paramtre de taille maxi d'un fichier transfr (upload_max_size), fix 2M par dfaut. Le second est la taille maxi d'un post (post_max_size), fix 6M par dfaut.

Avec les variables en jeu--taille maximum de transfert de PmWiki, la limite de taille des requtes d'Apache, et les paramtres de taille de fichier propre PHP, la taille maximum autorise sera la plus petite de ces trois paramtres.

Autres notes

  • Notez que l'accs en lecture aux fichiers transfrs n'est contrl par aucune des permissions de page ou de groupe--les fichiers transfrs sont accessibles mme si les pages sont protges en lecture par un mot de passe.

<< | Index doc admin? | >>


Traduction de PmWiki:UploadsAdmin - Page originale sur PmWiki:PmWikiFr.AdministrationDesTlchargements