Clément Lange <? "Développeur Web slash Référenceur"; ?>


7
déc 10
3

Interdire l’exécution de PHP dans un répertoire d’upload, via .htaccess

Vous avez développé un site Web, et vous proposez des uploads à vos utilisateurs. Ils peuvent ainsi envoyer une photo, un avatar, une vidéo, un fichier MP3, etc, sur votre serveur. Avec des scripts PHP permettant les uploads, développés par vous-même ou en utilisant un script PHP pré-développé, les fichiers uploadés arrivent dans un répertoire commun, votre dossier d'upload. Avouez-le, vous l'avez nommé "/upload/" :) !

Interdire l'exécution de PHP dans un répertoire d'upload, via .htaccess

Même si vous êtes certain(e) de la sécurité de ce répertoire, il y aura toujours un mec plus fort que vous, qui arrivera peut-être à envoyer un fichier dans un format non autorisé par votre script PHP. Ça peut arriver. Ainsi, un individu mal intentionné pourrait envoyer des fichiers PHP de sa confection sur votre serveur, et les exécuter, faisant ensuite ce qu'il veut avec votre site, et votre serveur. Pas cool.

Vous pouvez définir les répertoires dans lesquels Apache peut exécuter du PHP, dans les fichiers de configuration d'Apache. Mais voilà, il faut encore y avoir accès, et supposons que ce n'est pas votre cas. Comment le faire en utilisant le .htaccess ?

Simpliste ! :) Voici les lignes à insérer dans votre .htaccess, qui sera placé dans votre répertoire d'upload :

RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
php_flag engine off

Ces directives indiquent à Apache qu'il ne doit plus interpréter le PHP dans ce dossier. Le code PHP n'est plus exécuté, il est affiché comme du texte brut. Même si un saligaud arrive alors à uploader du PHP sur votre serveur, il ne pourra pas l'exécuter : c'est une sécurité supplémentaire.

Ces directives sont également héritées dans les sous-dossiers, au cas où vous auriez des sous-répertoires d'upload.

Et voilà, vous pouvez reprendre une activité normale, et des uploads plus sereins. :)

Commentaires (3) Trackbacks (0)
  1. Oui il marche, mais il marche juste avec Apache2 (pas du lighttpd).

  2. Oui j’avoue :-) Merci

  3. Bjr.
    Bon code coté serveur pour éviter le pillage de son blog.
    François

Laisser un commentaire


Aucun trackback.

PEBKAC : erreurs informatiques