Réponse acceptée !
Salut,
«
mais il suffit d'interdire l'upload de scripts PHP...»
Comme si seul php pouvais interagir avec le système . non, ce n'est pas suffisant. Rien qu'avec une install par défaut (par paquet debian) je vois les mods pour python et perl d'installés donc bon .
«
ma question est comment être sur que un "client" va pas s'amusé a uplodee des fichier qui contient des virus ou des scripts qui peuvent effacé tout mon site par exemple?»
Tu peux déjà filtrer au niveau de l'extension du fichier (par exemple en utilisant
strrchr() pour isoler l'extension). Au lieux d'avoir une liste noir d'extensions a interdire, fait toi plutôt une liste blanche de celles a autoriser, c'est bien plus sûr. Tu peux également faire un filtrage par type mime (cf
fonctions Fileinfo), mais surtout garde le filtrage par extension :
- apache (je suppose que tu utilises ce serveur) se base sur l'extension pour déterminer son comportement vis-a-vis des fichier (essaye de renommer un fichier .php en .txt, tu verras, il n'est plus interpretté).
- un fichier .php dont le code php est intégré dans du html est considéré comme un document html du point de vue du type mime.
N'autoriser que les fichier dont l'extension est autorisée permet ainsi d'assez bien filtrer les fichiers, le filtrage par type mime est sympatique en complément de ce filtrage (mais bien entendu insufisant s'il est seul).
Après cette étape de filtrage, tu peux également prendre des dispositions pour réduire l'impact dans le cas où un fichier malicieux a été uploadé. Quelques idées :
- Interdire l'accès direct au dossier où sont stockés les fichiers (cf conf de ton serveur) et permettre de télécharger le fichier via un scrit que tu auras fait.
- chroot sur le serveur.
- configurer le serveur afin que, dans le répertoire où se trouvent les fichiers uploadés, il n'exécute pas les cgi (normalement c'est par défaut), n'interprette pas les scripts etc.
- chmod -x sur les fichiers uploadés (pas super utile).
- etc