Il mio problema è questo:
Ho fatto un'hasting in php, ma non riesco a bloccare alcuni file dannosi,
esempio una shell!
Ho provato a scrivere qualcosa, ma con esiti negativi.
Cosa posso fare?
Il mio problema è questo:
Ho fatto un'hasting in php, ma non riesco a bloccare alcuni file dannosi,
esempio una shell!
Ho provato a scrivere qualcosa, ma con esiti negativi.
Cosa posso fare?
$_FILES['file']['type'] contiene il MIME type del file; tu lato PHP controlla che questo tipo sia fra la lista di files a cui permetti di essere caricati; se non lo è, non lo fai caricare.
Un esempio...
Codice PHP:
/***** Controllo Estensione del File *****/
$tipofile = pathinfo($file); // Tipo file tramite estensione senza "."
$filecon = array('png','bmp'); // Tipo di file consentito tramite estensione senza "."...
/** Controllo Estensione Consentita **/
if($tipofile == $filecon) {
//codice positivo
}
/** Se il file non è consentito stampo l'errore **/
else{
echo "Tipo file non consentito!";
}
Ultima modifica di sIM : 09-06-2008 alle ore 12.26.12
?
al massimo l'if dovrebbe essere:
non ha senso confrontare un array con un semplice valore...Codice PHP:
if(in_array($tipofile, $filecon)){
...
}
EDIT:
E ora che guardo meglio neanche il semplice pathinfo restituisce l'estensione, ma un array il cui elemento "extension" rappresenta l'estensione.
Quindi il confronto da fare dovrebbe essere:
Codice PHP:
if(in_array($tipofile['extension'], $filecon)){
...
}
Ultima modifica di Zorinik : 09-06-2008 alle ore 12.50.45
Non ho capito bene come devo fare.
Dove c'è scritto extension, cosa ci devo mettere?Codice PHP:
if(in_array($tipofile['extension'], $filecon)){
...
}
Ho provato ma non funziona.Posto il codice php:EDIT:Codice PHP:
<html>
<head>
<title>Risultato</title>
<style>
body {
background-color:black;
font-family:comic sans ms;
color:yellow;
}
</style>
</head>
<body link="blue" vlink="blue" alink="orange">
<?php
$sorgente = $_FILES['file']['tmp_name'];
$directory = "file/";
$nome = basename($_FILES['file']['name']);
/***** Controllo Estensione del File *****/
$tipofile = pathinfo($file);
$filecon = array('png','bmp','jpg','gif','mp3','xml','txt','pdf','doc','xls','rar','zip');
if (in_array($tipofile['extension'], $filecon)){
move_uploaded_file($sorgente, $directory.$nome);
if (!$sorgente) {
echo "Errore nel caricamento del file<br>";
echo "<a href=\"invia.html\">Torna indietro</a>\n";
}
else {
echo "File inviato con successo<br>";
echo "Il link del tuo file è:";
echo "<a href=\"http://www.gabryhacker.altervista.org/file/$nome\">$nome</a><br>";
echo "<a href=\"invia.html\">Torna indietro</a>\n";
}
}
else {
echo "<script type=\"text/javascript\"\n>";
echo "window.alert('Non puoi inviare questo tipo di file');";
}
</body>
</html>
risolto.Mancava la fine dello script.
EDIT2:
ho detto che andava bene perchè ho provato a caricare un file proibito.Il bello è che non mi carica nulla!
Ultima modifica di gabryhacker : 09-06-2008 alle ore 16.33.14
Risposta...
Edit (mio): Come fai a vedere se il file è stato inserito se hai messo la variabile $sorgente??
Se mai:
ed elimini questa parte:Codice PHP:
if($nome == "" OR $sorgente == "") {
echo "Errore nel caricamento del file<br>";
echo "<a href=\"invia.html\">Torna indietro</a>\n";
} // Fine: $sorgente e $nome sono vuoti..
else{
if (in_array($tipofile['extension'], $filecon)) {
// codice
}
} // Fine: $sorgente e $nome sono compilati..
=================Codice PHP:
if (!$sorgente) {
echo "Errore nel caricamento del file<br>";
echo "<a href=\"invia.html\">Torna indietro</a>\n";
}
Edit: devi aggiungere prima di "</body>
</html>" questo "?>"
=================
Edit2: E' giusto che non carica nulla..perchè non è un file consentito (almeno file proibito io intendo questo)...
Ultima modifica di sIM : 09-06-2008 alle ore 19.45.32
Tutto risolto.Posto il codice corretto:Codice PHP:
<html>
<head>
<title>Risultato</title>
<style>
body {
background-color:black;
font-family:comic sans ms;
color:yellow;
}
</style>
</head>
<body link="blue" vlink="blue" alink="orange">
<?php
$sorgente = $_FILES['file']['tmp_name'];
$directory = "file/";
$nome = basename($_FILES['file']['name']);
/***** Controllo Estensione del File *****/
$tipofile = pathinfo($nome);
$fileicon = array('png','bmp','jpg','gif','mp3','xml','txt','pdf','doc','xls','rar','zip');
if (in_array($tipofile['extension'], $fileicon)){
move_uploaded_file($sorgente, $directory.$nome);
if (!$sorgente) {
echo "Errore nel caricamento del file<br>";
echo "<a href=\"invia.html\">Torna indietro</a>\n";
}
else {
echo "File inviato con successo<br>";
echo "Il link del tuo file è:";
echo "<a href=\"http://www.gabryhacker.altervista.org/file/$nome\">$nome</a><br>";
echo "<a href=\"invia.html\">Torna indietro</a>\n";
}
}
else {
echo "<script type=\"text/javascript\">\n";
echo "window.alert('Non puoi inviare questo tipo di file');\n";
echo "</script>"
}
?>
</body>
</html>