INSTALLATION D'UN UPLOAD SÉCURISER (PREMIERE CRÉA)

odric88 Messages postés 10 Date d'inscription lundi 18 août 2003 Statut Membre Dernière intervention 19 décembre 2006 - 16 déc. 2006 à 19:59
cs_Mich93 Messages postés 9 Date d'inscription vendredi 30 juin 2006 Statut Membre Dernière intervention 20 décembre 2006 - 20 déc. 2006 à 08:58
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/40752-installation-d-un-upload-securiser-premiere-crea

cs_Mich93 Messages postés 9 Date d'inscription vendredi 30 juin 2006 Statut Membre Dernière intervention 20 décembre 2006
20 déc. 2006 à 08:58
Bonjour,

Donc je vous tiens informé :
ça ne fonctionne pas.
J'arrive pourtant jusqu'à la page "ok" (qui est vide, surment dû aux lignes que tu m'as dit d'effacer), mais quand je vais dans mon repertoire sur le ftp, le fichier (450ko)n'est pas là !
C'est le même résultat avec à peu près tous les sources de upload.
J'en conclus que c online.net qui bloque.
Si vous avez des idées, je suis preneur !
A+
Michael
cs_Mich93 Messages postés 9 Date d'inscription vendredi 30 juin 2006 Statut Membre Dernière intervention 20 décembre 2006
19 déc. 2006 à 13:39
Merci pour les réponses.

Je suis chez online.net.(pas gratuit, pas très cher non plus !)
J'ai un compte 500Mo
Ca commence à faire pas mal de temps que je cherche une solution pour uploader des fichiers sur mon ftp sans passer par un logiciel. J'ai essayé tout un tas de sources mais sans succès.
J'ai l'impression qu'en étant chez online je ne vais pas pouvoir.
Je vais donc essayé de supprimer les lignes comme tu me le propose Odric88.(je te tiens informé du résultat)
Michaël
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
19 déc. 2006 à 11:59
Salut... .. .

@ Mich93... c'est normal l'extension ftp ne doit pas être installée sur ton serveur... .. .

Alors sinon... pas mal de chose à dire... .. .

Tout d'abord tu code avec register_globals activé ce qui est une catastrophe au niveau instanciation des variables... ça provoque des bon trous de sécurité et ne marche pas sur la moitié des serveurs (notament le mien en local)... il faut utiliser la super globale $_FILES pour récupérer les fichier uploadés... .. !

Quand un fichier est uploadé cette dernière se présente comme suit...

Array
(
[nom_du_champ] => Array
(
[name] => monfichier.ext
[type] => image/jpg
[tmp_name] => chemin_complet_du_fichier_uploadé
[error] => 0
[size] => 1000
)

)

Le principe de l'install est sympa bien qu'un peu superflue mais tu aurais pu tout mettre dans un fichier parceque un fichier juste pour afficher un bouton avec voulez vous installer c'est quelque peu inutile... qui plus est tu génère un fichier config mais le login et le pass de connection ftp sont dans index.php... le fichier de config est la pour ça... .. .

Ensuite je vois pas en quoi ton upload est sécurisé... au contraire... aucune protection d'accès... n'importe qui peu uploader des fichiers... la seule protection c'est le htaccess pour afficher les fichiers php en plain/text mais c'est loin d'être suffisant... d'ailleur quand je vois sécurisé dans le titre ça me fait toujours douter... d'autant plus quand l'auteur dit qu'il débute... .. .

Tu utilise les fonctions ftp_*... bien que ça ne soit pas vraiment utile c'est un choix... mais à l'upload tu utilise les fonctions du gestionnaire de fichier... bref hormis pour lister le contenu du répertoire cible, ce que tu pourrais faire avec les fonction du gestionnaire de fichier, ta connection ftp ne sert strictement à rien si ce n'est griller des resources... d'ailleurs tu fais un opendir() sur le répertoire de destination mais tu n'utilise jamais le pointeur que tu as créé... .. .

Tu gère très mal les erreurs... quand tu les gères... pareil à l'install d'ailleur... si aucun fichier n'est uploadé c'est page noir... si move_uploaded_file() échoue le fichier sera quand même compté comme uploadé... la gestion des erreurs d'upload ne se fait pas comme ça... ta ligne...

<?php
if (is_uploaded_file($upfile))
{
echo "L'extension de votre fichier n'est pas autorisée par notre serveur";}
if ($upfile_size>$maxsize)
{
echo "Le fichier a une taille supérieure à la limite autorisée!"; }
?>

A la fin du fichier ne correspond à rien... le le fichier a bien été uploadé tu affiche une erreur... c'est d'ailleurs étonnant que tu n'ais pas de parse error car tu ne ferme pas les accolades... comme dit précédament les codes d'erreurs d'upload sont contenu dans la variable $_FILE... .. .

0 il n'y a eu aucune erreur
1 Le fichier dépasse la limite autorisée par le serveur (fichier php.ini)
2 Le fichier dépasse la limite autorisée dans le formulaire HTML
3 L'envoi du fichier a été interrompu pendant le transfert
4 Le fichier envoyé a une taille nulle

Cependant il est mieux de vérifier soit même la taille, le type de fichier et sont contenu car ceux ci sont facilement falsifiable... .. .

Pour l'upload d'image d'une part tu te limite à trois extensions... mais si je veux, par exemple, uploader des fichiers bitmap... et tu t'y prend mal...

if ($type=="$type1" || $type=="$type2" || $type=="$type3")

déja les doubles quotes sont inutiles...

if ($type==$type1 || $type==$type2 || $type==$type3)

et autant faire...

(dans conf)
$allowed_ext = array('gif','png','jpg','bmp',...

(dans upload)
if(in_array($allowed_ext,$type))
//c'est bon
else
// c'est pas bon

Ta méthode pour récupérer l'extension n'est pas des meilleurs... si j'upload une_image.jpeg ça ne passera pas...

function getFileExt($filename)
{
if(false ($pos strrpos($filename,'.'))
return '';

return strtolower(substr($filename,$pos+1));
}

ensuite tu fais

if(in_array($allowed_ext,getFileExt($_FILES['upfile']['name']))
//c'est bon
else
// c'est pas bon

Mais bon... controler le type de fichier par rapport à son extension n'est pas suffisant... c'est une faille de sécurité potentielle... il faut aussi penser aux attaques null byte dans les tentatives de dissimulation d'extension.. .

Sinon niveau syntaxe pas mal de petite erreur pas très grave mais les mauvaises habitude se prennent vite... .. .

<? echo "$nombre"; ?> => <? echo $nombre; ?>

if($type=="$type1" => if($type == $type1

$jour=$tmp["mday"]; => $jour = $tmp['mday'];

$tout="$mois$h$jour$s$jour$s$m"; => $tout = $mois.$h.$jour.$s.$jour.$s.$m;

echo "..."; => echo '...';

Voili voilou à première vu... .. .

@ tchaOo°
odric88 Messages postés 10 Date d'inscription lundi 18 août 2003 Statut Membre Dernière intervention 19 décembre 2006
19 déc. 2006 à 11:18
Si vous êtes chez free ou un hebergeur gratuit cela ne m'etonne pas.

Editez votre index.php et supprimer les lignes suivantes:

(ligne 4 à 15)

$ftp_server = "server-ou-ip";
$ftp_user_name = "login";
$ftp_user_pass = "password";
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
$rep = "repertoire-racine";

$dossier = opendir( $rep );

$nbr_file = count(ftp_nlist($conn_id, $rep));

$nombre = $nbr_file;

Puis:

ligne 69 à 73
supprimer:






Il y <? echo "$nombre"; ?> fichiers sur le ftp




Voila vous n'aurez pas de compteur pour le moment attendez la prochaine version ;)
cs_Mich93 Messages postés 9 Date d'inscription vendredi 30 juin 2006 Statut Membre Dernière intervention 20 décembre 2006
19 déc. 2006 à 08:45
Merci pour votre réponse.

Maintenant j'ai un message d'erreur une fois l'installation terminée et quand je clique sur "allez à votre upload":
Fatal error: Call to undefined function: ftp_connect() in index.php on line 7

je débute, mais ais je vraiment besoin de l'indiquer ? ;)

Michael
odric88 Messages postés 10 Date d'inscription lundi 18 août 2003 Statut Membre Dernière intervention 19 décembre 2006
18 déc. 2006 à 21:33
Bonjour Mich93,

Le chemin ftp se trouve par exemple quand vous vous connecter a votre FTP il y à la racine qui se trouve a "/" puis un autre dossier par exemple qui se nomme upload et qui contient cette upload donc le chemin sera "/upload/" sans les (")
En effet c'est limiter je vais arranger cela ce soir :)

Merci de m'avoir dit ce petit probleme de longueur de caractere
cs_Mich93 Messages postés 9 Date d'inscription vendredi 30 juin 2006 Statut Membre Dernière intervention 20 décembre 2006
18 déc. 2006 à 14:43
Bonjour,

Je ne sais pas quoi remplir au champ texte suivant :
Veuillez indiquer le chemin ftp en partant du point zero vers l'upload (Avec le slash à la fin) :
mon chemin ftp à l'air trop long ?! le champ bloc à un certain nombre de caracteres
peut etre pouvez vous m'indiquer ou je peut trouver ce chemin
Merci

Michael
GNVA Dfx Messages postés 10 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 20 décembre 2006
17 déc. 2006 à 15:10
Je n'ai pas regardé la source mais je pense :

Pas besoin des fonctions ftp_* pour une gestion d'un contenu d'un disque local, les nombres de fichiers, l'upload, la modification, la gestion complète en faite.

Mais sinon je pense que c'est au point et tous automatisé, bravo quand même
cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 1
17 déc. 2006 à 09:42
Salut
J'ai pas encore regardé ta sourc, mais pourquoi tu compterais pas les fichiers pour free de maniere plus classique avec une fonction recurssive sur fread avec un compteur ?
odric88 Messages postés 10 Date d'inscription lundi 18 août 2003 Statut Membre Dernière intervention 19 décembre 2006
16 déc. 2006 à 19:59
Bonjour à tous ceux qui se pencherons sur ma source ^^

N'hesitez pas a faire vos commentaires ils serons les bienvenues :)
Rejoignez-nous