UPLOAD + AFFICHAGE ET SUPPRESSION DU CONTENU D'UN DOSSIER (IMAGES)

masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011 - 22 mars 2009 à 14:39
zstof84 Messages postés 1 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 20 février 2012 - 20 févr. 2012 à 06:16
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49585-upload-affichage-et-suppression-du-contenu-d-un-dossier-images

zstof84 Messages postés 1 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 20 février 2012
20 févr. 2012 à 06:16
bonjour merci pour le scritp mais j'aurai aimé pouvoir afficher les miniatures sur plusieurs pages mais je ne sais vraiment pas comment faire si quelqu'un pourrait m'aider merci
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 janv. 2010 à 09:40
"mieux" ?

quelle flemme ^^
DAM74 Messages postés 10 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 15 janvier 2010
15 janv. 2010 à 00:22
le fichier zip permet de mieux tester le scrip sans le copier coller de la source ..............
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 janv. 2010 à 10:13
je ne te comprends pas, DAM74.
pourquoi demander ainsi des zips a tout va... ?
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
13 janv. 2010 à 20:29
Oui... oui... mais, ... Non...
pour tester, il suffit de faire un copier/coller du script dans une page php et de le transférer sur un serveur (ou en local si l'on a easyphp ou wamp ou autre)
Avec un script aussi court, je ne vois pas l'intérêt de se prendre la tête à faire un zip...
DAM74 Messages postés 10 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 15 janvier 2010
13 janv. 2010 à 16:18
pour test le script ceci est plus facile avec un fichier zip
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
13 janv. 2010 à 15:45
Et pourquoi yveutunzip le coco?
DAM74 Messages postés 10 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 15 janvier 2010
13 janv. 2010 à 15:32
Merci de mettre un fichier zip pour le code
houssam88 Messages postés 3 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 2 mai 2009
2 mai 2009 à 12:24
salut a tous
je me permet de vous poser une petite question pas tré loin de votre sujet :
bon voila je rencontre un petit problème dans l'upload des images, pas tou a fait concernant l'upload (celui ci marche bien) mai j'aimerai bien pouvoir afficher l'image uploadé dans une zone reservé a celle ci juste apré que l'utilisateur selectionne son image chosi
j'esper que quelqu'un me comprend
Voici ma page php:
<?php
if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
{
if ($_FILES['monfichier']['size'] <= 1000000)
{
$infosfichier = pathinfo($_FILES['monfichier']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
if (in_array($extension_upload, $extensions_autorisees))
{
move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . basename($_FILES['monfichier']['name']));
echo "L'envoi a bien été effectué !";
}
}
}
?>
<form method="post" enctype="multipart/form-data" >


Joindre votre photo :










</form>

besoin de votre aide
cs_candyraton Messages postés 109 Date d'inscription dimanche 27 juillet 2008 Statut Membre Dernière intervention 2 février 2012 3
6 avril 2009 à 22:36
Merci masternico
rat sucré? j'ignorais! (c tjrs mieux que sel et rat!)
"qu'en dira t'on" c'est mon coté anticonformiste;(sinon c'est candy ou raton; 2 p- qui s'oposent);(mais c tjrs candy qui ecrit!)so bad...

En cherchant un peu (comment il pourrait executer un jpg par exemple) j'ai bien compris à quel point je suis loin du compte:
"agent de sécurité" est un metier à part entiére!
demonstration: http://www.developpez.net/forums/d198653-4/php/langage/contribuez/securite-failles-plus-courantes/
Merci encore pour ta réponse
mondherclubiste Messages postés 10 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 6 avril 2009
6 avril 2009 à 14:24
Salut tout le monde,
Désolé pour le retard , j'ai corrigé l'erreur.
Merci Masternico pour tes interventions et tes conseils sur ce post et bonne continuation
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
6 avril 2009 à 13:41
lit le commentaire de hajbioblio (5ème post). L'erreur reportée n'a pas été corrigée. Le numéro de ligne a changé mais c'est toujours la même erreur.
Ce qui serait intéressant, c'est que ce soit l'auteur qui réponde aux questions...
Fenri Messages postés 5 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 17 novembre 2009
6 avril 2009 à 13:14
Je commence à me decourager ! J'ai testé plein de codes et aucun ne marche ...
Je viens de tester celui là et il ne marche pas il me dis (Wampserveur) :"Parse error: parse error, expecting `','' or `';'' in C:\wamp\www\Exchange\parcourir.php on line 43". Quelqun pourrait peut etre le débuguer entieremnt ou me fournir un lien vers un autre code où il n'y a pas d'erreurs ! Merci d'avance.
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
6 avril 2009 à 09:22
Salut candyranton
(marrant ton pseudo, outre le jeu de mot, cela fait aussi un mélange spanglish dont la traduction est 'le rat sucré' ;)

Le filtre des extensions est faillible car le champs 'type' de la variable FILES est renseigné par le navigateur. Il n'est en rien vérifié par PHP quand le fichier arrive sur le serveur. Ce qui fait qu'avec un peut de connaissance, il facile de faire croire au script que nous lui envoyons un simple fichier jpeg alors que c'est un script PHP ou du javascript. Une fois le fichier sur le serveur, on peut y faire appels depuis l'extérieur et ainsi exécuter des commandes (afficher le contenu de certains fichiers PHP par exemple, pour y trouver les mots de passe de connexion MySQL) avec la limitation que le script n'a pas les droit root, donc ce n'est pas tout à fait un rootkit. J'appellerais ça plutôt un 'userkit'.

Il faut utiliser les fonctions 'mimes' de PHP pour détecter quel est le vrais type mimes du fichier. Le problème, c'est que cette extention n'est pas toujours disponible.
Voici un petit exemple (récupéré sur un site en recherchant avec google):
$mtype = '';

// magic_mime module installed?
if (function_exists('mime_content_type')) {
$mtype = mime_content_type($file_path);
}
// fileinfo module installed?
else if (function_exists('finfo_file')) {
$finfo = finfo_open(FILEINFO_MIME); // return mime type
$mtype = finfo_file($finfo, $file_path);
finfo_close($finfo);
}

Ensuite, on compare le mimes donné par le navigateur avec celui retrouvé manuellement. Si il n'y a pas de correspondance: c'est une tentative d'attaque.

===================//=====================

L'auteur a argumenté que ce script fait partie d'une console réservé à l'administrateur et que donc dans sa version finale il comporte tout un lot de contrôles d'accès.

De ce fait, dans l'état actuel, ce script n'est en rien sécurisé. Donc je ne peut pas dire ce qu'il en est des failles de sécurités d'un script qui ne protège rien...

par contre, dans le petit bout de code servant à déterminer si qqu'un essaye de jouer avec les paramètres, le script ne s'arrête pas pour autant en cas de tentative:
if(isset($_GET['delete']))
if(strpos($_GET['delete'],'/')===false) // <== il faudrait sortir de script en cas de présence
if(file_exists($dir.'/'.$_GET['delete']))
unlink($dir.'/'.$_GET['delete']);
cs_candyraton Messages postés 109 Date d'inscription dimanche 27 juillet 2008 Statut Membre Dernière intervention 2 février 2012 3
5 avril 2009 à 20:03
Bonjour,
ton script à attirer mon attention car j'ai fait pareille pour une galerie;(j'ai finalement du gerer des erreurs de tailles (car je crée des miniatures deriere(2048px maxi)aprés telechargement et le poids (500ko chez free) (sources dispos si ça vous interesse)).
(perso j'ai choisi de m'envoyer un mail à chq erreures)

j'aurais 2 questions (ainsi qu'à masternico):
-Comment peuvent-ils franchir le filtre des extensions pour hacker?
-Quels sont les failles de sécurité de ce code?

Merci pour votre contribution
hajbioblio Messages postés 1 Date d'inscription samedi 5 avril 2008 Statut Membre Dernière intervention 23 mars 2009
23 mars 2009 à 10:36
1- Erreur à la lign 41 : onclick="supp_im(\''.$lien[1].'\'')
-> correction : onclick="supp_im(\''.$lien[1].'\')

2- il faut préciser que le fichier dans lequel on doit coller le code doit être nommé "parcourir.php"

3- pour que le script marche, il faut créer un dossier nommé "images" à côté du fichier "parcourir.php"
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
23 mars 2009 à 09:24
Au fait,
Il y a un truc aussi à la ligne 43:
<img src="'.$dir."/".$lien[1].'"

Il faut entourer le lien avec rawurlencode pour assainir les noms avec certains caractères spéciaux (accents et autres)
<img src="'.$dir."/".rawurlencode($lien[1]).'"
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
23 mars 2009 à 00:57
C'est mieux oui.
Par contre, je pense que puisque c'est ton script qui créer le lien d'appel, on peut considérer que le lien DOIT être correcte sinon, ça signifie que qqu'un s'ammuse avec les paramètres.
Donc j'irais plus loin dans la parano et je ferais en sorte de logger l'erreur ainsi que la variable $_SERVER dans un fichier et/ou BDD de manière à pouvoir repérer si qqu'un a essayé de jouer manuellement avec les paramètres.
C'est un bon moyen de detecter les attaques et les contrer.
mondherclubiste Messages postés 10 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 6 avril 2009
22 mars 2009 à 23:42
Salut,
D'abord merci masternico pour vos conseils et vos remarques.
Pour la 1 remarque j'ai modifié la ligne afin d'être plus lisible .
Pour la 2 remarque, certes ce script possède quelques lacunes de sécurité, mais il faut pas oublié qu'un tel script est destiné au administrateurs des sites, donc il ne va être exécuté qu'après des vérifications des paramétrés de connexion (ex:les sessions,...), mais quand même, j'ai suivi ton conseil et j'ai ajouté ce test : if(strpos($_GET['delete'],'/')===false)
masternico Messages postés 487 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 1 septembre 2011
22 mars 2009 à 14:39
Salut,
en soit, le script est correct. L'indentation est propre. Il n'y a pas de commentaires, mais le code est suffisemment simple pour ne pas avoir à le faire.

Par contre, il y a deux points sur lesquels je serais assez vache:
1) Dans la ligne suivante:
42. echo'<td style="border:solid thin '.$couleur.'" align="center">['.$dir.

]</td>';
Tu mélanges alégrement les apostrophes et guillemets... Fait un choix. Soit tout en guillemet, soit tout en apostrophe car la relecture est difficile.

2)A ton avis, que se passe t-il si je mets dans la barre d'adresse ceci? :

http://www.tonsite.fr/parcourir.php?aff&delete=supprimer.png ou bien pire encore : http://www.tonsite.fr/parcourir.php?aff&delete=../index.php

Je te laisse imaginer ce que je pourrais faire comme dégats sur ton site juste en faissant de simples requettes HTML.

Il te faut sécuriser tes inputs car contrairement à ce que l'on dit, internet n'a rien du 'tout le monde il est beau tout le monde il est gentil'.
C'est un monde sans pitié où nombre de loups attendent dans l'ombre qu'une brebis égarée baisse sa garde. Et là, il lui saute à la gorge.

Cette petite image pour dire que si tu sorts un script avec aussi peut de controle, j'ai peur pour ce qui est du reste de ton site.
Si un loup te tombe dessus, tu n'aura plus que tes yeux pour pleurer car ce qui les interesse, c'est pas le contenu de ton site mais plutôt d'utiliser les ressources de ton sites à d'autres fins (spam, hacking, brute force attack...)

Je ne note pas car ce script ne fait pas avancer le smilblick
Rejoignez-nous