2009-10-16 5 views
3

J'ai vu beaucoup de formulaires téléchargés piratés, et certains avaient de très bons contrôles de sécurité du fichier en cours de téléchargement (du moins je le pense), mais quelqu'un a réussi à télécharger un fichier PHP. Je me demandais: existe-t-il un moyen de télécharger un fichier dans le dossier de téléchargement qui a 777 autorisations? Je pense à utiliser HTTP PUT.La configuration de l'autorisation du dossier de téléchargement est-elle sécurisée?

Répondre

6

En général 777 est à peu près comme non sécurisé comme il obtient ... cela signifie que n'importe qui peut lire et écrire dans vos fichiers.

HTTP PUT n'est pas intrinsèquement plus sécurisé que HTTP POST si vous autorisez l'exportation des fichiers téléchargés sur votre serveur. Dans l'ensemble, si vous est pour permettre l'exécution de fichiers arbitraires, vous devez effectuer une très bonne vérification des fichiers côté serveur, et utiliser chroot sur le serveur serait judicieux.

En ce qui concerne les permissions, je règle généralement tout ce qui est accessible sur le Web à 644 appartenant à l'utilisateur du serveur Web.

1

Vous n'avez pas besoin et ne devez pas avoir une autorisation 777 sur un dossier de téléchargement. Il devrait suffire de le faire lire et écrire seulement pour l'utilisateur sur lequel le Webserver fonctionne (avec apache/debian, généralement www-data). De plus, vous devriez désactiver (par exemple via .htaccess) tout ce que vous ne voulez pas faire dans ce dossier, comme l'exécution de scripts PHP (même s'il arrive qu'un utilisateur télécharge un PHP, il ne peut pas être exécuté). HTTP PUT ne modifie pas votre 777 problème, car le fichier sera toujours là après qu'il a été téléchargé.

2

Autorisations de dossier est juste pour s'assurer que votre utilisateur httpd/Apache peut écrire dans ce dossier. En fait, vous n'avez pas besoin de chmod 777 pour votre dossier de stockage. Assurez-vous simplement de définir le propriétaire sur root et de le grouper sur l'utilisateur Apache/httpd que vous utilisez ou simplement de définir le propriétaire du dossier sur votre utilisateur Apache.

chmod 774 /upload/folder: inscriptible pour le propriétaire et le groupe et les autres juste lus. PHP: si ce dossier fait référence au dossier racine du document utilisateur, vous pouvez désactiver le moteur PHP pour ce virtualhost particulier.

Si ce dossier fait partie du dossier racine de votre document système/application, il peut être utile de modifier le fichier .htaccess et d'utiliser la directive removeHandler Apache.

Questions connexes