UPLOAD HTTP- PHP

MrJava_Javaman Messages postés 5 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 1 septembre 2007 - 1 sept. 2007 à 13:15
cs_christo16 Messages postés 17 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 16 octobre 2008 - 16 oct. 2008 à 22:06
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/43937-upload-http-php

cs_christo16 Messages postés 17 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 16 octobre 2008
16 oct. 2008 à 22:06
Beaucoup de personnes mon demander les sources php...
J'ai oublier de les mêtre...
Si vous avez un probleme vous pouvez toujours m'envoyer un email.

post_dump.php

<?php
/* check for and loop through uploaded files */
foreach ($_FILES as $name => $info) {
/* chekc the file has a valid name */
if (($info['name'] != 'ht.access' &&
substr($info['name'], 0,1) != '.' &&
$info['name'] != 'allowed_files')) {

/* attempt to move the file to the uploaded_files directory */
if (@move_uploaded_file($info['tmp_name'], "uploaded_files/files/{$info['name']}")) {
/* get the contenst of the array of files */
$file_arrays = @unserialize(@file_get_contents('uploaded_files/allowed_files'));

/* if there are more already 5 files, remove the oldest item fomr the array
* and delete it
*/
if (count(@$file_arrays['files']) == 5) {
$name = array_shift($file_arrays['files']);

unset($file_arrays['types'][$name]);
@unlink('uploaded_files/files/' . $name);
}

/* add the new item to the arrays */
$file_arrays['files'][] = $info['name'];
$file_arrays['types'][$info['name']] = $info['type'];

/* serialize the array and write it back to the file */
if ($fhwnd = @fopen('uploaded_files/allowed_files', 'wb+')) {
fwrite($fhwnd, serialize($file_arrays));
fclose($fhwnd);
}
}
}
}
?>
<html>
<head>
<title>Form Post Dump</title>
</head>

<?php if ($_POST): ?>
You submitted the following POST variables with the following names:


<?php foreach($_POST as $name => $var) : ?>
<li><?php echo(htmlspecialchars($name)) ?> = <?php echo(htmlspecialchars($var)) ?></li>
<?php endforeach; ?>
<?php endif; ?>
<?php if ($_GET): ?>
You submitted the following fariables with the query string:


<?php foreach($_GET as $name => $var) : ?>
<li><?php echo(htmlspecialchars($name)) ?> = <?php echo(htmlspecialchars($var)) ?></li>
<?php endforeach; ?>
<?php endif; ?>
<?php if ($_FILES): ?>
You submitted the following FILES:


<?php foreach($_FILES as $name => $info): ?>
<li>File name: <?php echo(htmlspecialchars($name)) ?>

<li>Client file name: <?php echo(htmlspecialchars($info['name'])) ?></li>
<li>File MIME type: <?php echo(htmlspecialchars($info['type'])) ?></li>
<li>File size: <?php echo(htmlspecialchars($info['size'])) ?></li>
<li>Download link: [uploaded_files.php?file=<?php echo(htmlspecialchars($info['name'])) ?> <?php echo(htmlspecialchars($info['name'])) ?>]</li>

</li>

<?php endforeach; ?>
<?php endif; ?>
<form enctype="multipart/form-data" action="<?php echo($_SERVER['PHP_SELF']) ?>" method="post">
Variable1:


Variable2:


Variable3:


File:





</form>

</html>








uploaded_files


<?php
/* load the file containg the list of uploaded files in to an array */
$file_arrays = @unserialize(@file_get_contents('uploaded_files/allowed_files'));

/* check the data was loaded successfully - if not, create an empty array */
if (!is_array($file_arrays)) {
$file_arrays array('files'> array(), 'types' => array());
}

/* check for the existance of a file variable in the queery string
* if its there, this contains the name of the file to be downlaoded
*/
if (isset($_GET['file'])) {
$file = $_GET['file'];

/* check the file is in the array retrieved from the file */
if (in_array($file, @$file_arrays['files'])) {
/* get the Content-Type of the file */
header('Content-Type: ' . $file_arrays['types'][$file]);
header('Content-Disposition: attachment; filename="' . $file . '"');

/* send the file */
@readfile("uploaded_files/files/$file");
exit;
}
}
?>
<html>
<head>
<title>Uploaded Files</title>
</head>

Recently Uploaded Files


<?php foreach($file_arrays['files'] as $file): ?>
<li>[<?php echo($_SERVER['PHP_SELF'] . '?file=' . htmlspecialchars($file))?>
<?php echo(htmlspecialchars($file)) ?>]
</li>
<?php endforeach; ?>


</html>
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
16 juil. 2008 à 18:36
Bonjour,

Il est ou le script PHP ?
Si quelqu'un a le script merci de m'avertir ;)

++
MrJava_Javaman Messages postés 5 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 1 septembre 2007
1 sept. 2007 à 14:54
Si il mets les fichiers uploader dans un dossier "private" alors il n'y a pas de risque je crois, par example je crois que tu as uplode "deletx.php" si seulment tu sais ou se trouve et tu peux acceder cette location alors tu peux l'excuter mais is non alors pas du risk. en tout cas je veux seulment savoir comment est le format du php code, pas essencielle de mettre tout le code seulment la method d'uplode. ou bien simplement me dire si c'est la "built-in" function $_FILE ? merci.
AhlaBiih Messages postés 1 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 1 septembre 2007
1 sept. 2007 à 14:13
Salut,
ton "uploader" est bien, mais tu as oublié le minimum de sécurité. En effet, si tu consultes ton http://jaycoder.olympe-network.com/uploaded_files.php tu trouveras des fichiers que j'ai uploadé, alors qu'elles n'existent plus maintenant. Oui! puisque j'ai uplodé un fichier qui me permet de parcourir tous ton site et d'effacer ce que je veux.
ton fournisseur d'acces ne sera pas content s'il apprent que tous le monde peut uploader ce qu'il veux sur ton site.
D'abord, supprimes ton post_dump.php pour minimiser les degats, puis
si tu veux, parlons en privé (par mail par exemple) pour que je te decrive les failles de securité, puis tu repares ces failles et tu attaches au commentaires un resumé de nos mails.

aussi, conseil, n'attaches pas ton upload , au mois jusqu'à ce que tu repares les failles.

Merci
Sami
MrJava_Javaman Messages postés 5 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 1 septembre 2007
1 sept. 2007 à 13:15
le code de php est-il simplement un "$_FILE['']" request ? ou il ya quelque chose d'autre ? peux tu me l'attacher avec le source ? merci.
Y a t-il une methode pour savoir le progress de l'upload ?