Salut,
J'aimerais empêcher l'utilisateur d’exécuter des programmes sur mon serveur.
J'ai tester la technique htaccess car je n'ai rien trouvé d'autre mais cela ne semble pas fonctionner ?
https://openclassrooms.com/forum/sujet/php-comment-parametrer-wamp-pour-gerer-htaccess-85977
Ce sujet a l'air de donner la solution
Wamp->Apache->Apache modules->rewrite module
Le 23 juillet 2018 à 01:20:40 drapsag06 a écrit :
https://openclassrooms.com/forum/sujet/php-comment-parametrer-wamp-pour-gerer-htaccess-85977Ce sujet a l'air de donner la solution
Wamp->Apache->Apache modules->rewrite module
C'est déjà cocher.
Dans eroor log j'ai
[Mon Jul 23 22:51:32.418918 2018] [core:alert] [pid 14836:tid 1232] [client ::1:50070] C:/wamp64/www/FileHosting/.htaccess: <Directory not allowed here, referer: http://localhost/
Dans C:/wamp64/www/FileHosting/uploads/.htaccess :
ForceType application/octet-stream
Header add Content-Disposition "attachment"
Hum c'est sensé faire quoi ça ?
Je dois supprimer l autre htaccess ?
Ça force le téléchargement mais en faisant un test chez moi, php reste est exécuté quand même. Je vais fouiller et je reviens avec une solution.
Ok car ca doit pas bloquer les gens d'uploads leur fichier et de pouvoir télécharger et visionner une image par exemple.
Note : les chemins indiqués sont liés à mes configurations (et les tests qui vont avec).
Dans le cas où c'est le module PHP d'apache qui tourne :
La conf suivante fonctionne en la collant dans le VirtualHost :
<Directory /var/www/simon/repo/zenitude-tools/web/uploads/>
php_value engine off
</Directory>
Si tu veux passer par un htaccess, en plaçant php_value engine off
dans /var/www/simon/repo/zenitude-tools/web/uploads/.htaccess
, tu auras le même résultat.
Avec PHP-FPM :
Dans le VirtualHost :
<IfModule mod_proxy_fcgi.c>
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://127.0.0.1:13004/"
</FilesMatch>
<Directory /var/www/simon/repo/zenitude-tools/web/uploads/>
<Files "*.*">
SetHandler !
</Files>
</Directory>
</IfModule>
Ou dans /var/www/simon/repo/zenitude-tools/web/uploads/.htaccess
:
<Files "*.*">
SetHandler !
</Files>
Et du coup, ça désactive !'interprétation de PHP dans le répertoire uploads.
Je vais essayer merci
Du coup mon site est sensé être protégé la?
Je vais essayer merci
Du coup mon site est sensé être protégé la?
Protégé d'un pirate qui met un fichier php dans le dossier upload/, oui
Le 24 juillet 2018 à 15:32:20 stacksmashing a écrit :
Je vais essayer merci
Du coup mon site est sensé être protégé la?Protégé d'un pirate qui met un fichier php dans le dossier upload/, oui
Ca suffit non ?
Ca suffit non ?
Si l'utilisateur peut uniquement uploader des fichiers dans CE dossier, alors oui ça suffit pour l'aspect exécution de code "directe".
Sinon il y a d'autres problèmes potentiels:
- le problème d'écrasement de fichiers existants
- le flood (envoi de milliers de fichiers pour saturer le serveur)
- il faut voir si le script d'upload est safe (upload possible dans un autre dossier ?)
- Certaines failles (LFI par exemple) peuvent permettre l’exécution d'un fichier présent dans uploads/
- etc..
Donc là tu as un morceau de ton site qui est sécurisé pour un cas donné, il faut voir le reste
C'est un projet scolaire, je veux juste une base pour montrer qu'il y en a une.
Il faut prévoir les même effets qu'une injection XSS donc forcer (aussi) le téléchargement des données présentes dans uploads (cf le premier message de moi) :
ForceType application/octet-stream
Header add Content-Disposition "attachment"
Le 24 juillet 2018 à 19:47:58 deepblue a écrit :
Il faut prévoir les même effets qu'une injection XSS donc forcer (aussi) le téléchargement des données présentes dans uploads (cf le premier message de moi) :ForceType application/octet-stream Header add Content-Disposition "attachment"
C'est à dire ?
C'est à dire ?
Si le contenu du fichier est affiché, il peut contenir du javascript (et donc rediriger/tromper une personne qui tombe dessus.
Le 24 juillet 2018 à 22:37:14 stacksmashing a écrit :
C'est à dire ?
Si le contenu du fichier est affiché, il peut contenir du javascript (et donc rediriger/tromper une personne qui tombe dessus.
Oui mais une image je dois bien l afficher.
Dans une application que je réalise, j'ai place les images dans un répertoire dédiée et les autres types de fichiers dans un autre répertoire. Les images ne sont pas forcée au téléchargement. Les autres fichiers oui, avec la couche de désactivation du PHP en plus.
Tu peux aussi voir le problème autrement : avec la directive apache Files, tu forces en image/jpg ce qui termine en .jp{e}g, image/png ce qui termine en .png, image/gif ce qui termine en .git et tu force en application/octet-stream le reste.