2008-11-14 8 views
2

J'ai un script PHP qui traite les téléchargements de fichiers. Le script essaie d'organiser les fichiers téléchargés et peut créer de nouveaux dossiers pour déplacer les fichiers si nécessaire. Ces fichiers seront sous le répertoire racine de www (c.-à-d. Qu'un navigateur Web pourra y accéder).Quelles autorisations de fichier dois-je définir pour les fichiers téléchargés?

Ma question est, quelles autorisations dois-je définir pour les dossiers qui sont créés et pour les fichiers qui y sont déplacés (en utilisant mkdir() et move_uploaded_file())?

Répondre

4

Votre serveur Web a besoin d'autorisations de lecture et d'écriture dans ces dossiers, l'autorisation d'exécution doit être révoquée (en supposant que les systèmes de type UNIX soient identiques). Sinon, un utilisateur pourrait télécharger un script et le faire exécuter en lui envoyant une requête HTTP.

Mais IMO l'ensemble du concept est un trou de sécurité potentiel. Mieux stocker les fichiers dans un dossier en dehors de la racine du serveur web, de sorte qu'aucune acces directe n'est possible. Dans votre application Web, vous pouvez avoir une page de téléchargement PHP qui scanne le répertoire de téléchargement et affiche une liste de liens de téléchargement. Ces liens de téléchargement conduisent à un autre script, qui lit les fichiers de votre répertoire de stockage et les envoie à l'utilisateur.

Oui, c'est plus de travail. Mais le scénario est très commun, vous devriez donc pouvoir trouver facilement du code source avec des exemples d'implémentation. Et c'est beaucoup moins de travail que d'avoir votre serveur piraté ...

+0

Cela fait partie d'un CMS et les fichiers sont toutes des images (que nous vérifions - les non-images sont rejetées). Je comprends le risque de quelqu'un, par exemple, en téléchargeant un script PHP –

+0

Ifg vous pouvez désinfecter les données d'entrée, il me semble assez sûr. Mais je désinstallerais toujours le drapeau exécutable ;-) – Treb

+0

Les fichiers eux-mêmes ne devraient certainement pas avoir d'autorisations d'exécution définies, mais le répertoire dans lequel ils sont placés aura besoin d'autorisations d'exécution pour le serveur web si vous souhaitez fournir des listes du contenu du répertoire. –

0

pour y répondre spécifiquement 766 (pas d'autorisations d'exécution) serait le plus libre que vous souhaitez utiliser. À l'autre extrémité 700 permettrait à personne d'autre que l'utilisateur Web de jouer avec le fichier. Mais tout dépend de ce que vous feriez avec les fichiers qui détermineraient le meilleur résultat.

Questions connexes