déc 103
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/"
!
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.


12 décembre 2010
Oui il marche, mais il marche juste avec Apache2 (pas du lighttpd).
3 février 2011
Oui j’avoue
Merci
1 mars 2011
Bjr.
Bon code coté serveur pour éviter le pillage de son blog.
François