[PHP] upload di file in cartella e sua sicurezza

xnotar

Utente Attivo
3 Apr 2012
65
0
6
Ora ho fatto un'altra prova...
Ho preso un file in .php e ovviamente me lo ha rifiutato. Gli ho cambiato l'estensione in .jpg per creare un FAKE ed il risultato è stato questo:
Upload : test3.jpg
Type : image/jpeg
Size (kB) : 2.03515625
Stored in : /tmp/phpjlpbwo
target folder : models/
target file : models/test3.jpg
ERRORE : Lo spostamento del file nella destinazione non è riuscito

Lo spostamento non è avvenuto come negli altri casi, però non so se lo ha riconosciuto come un FAKE o se lo ha digerito così come proposto.
 
Ultima modifica:

xnotar

Utente Attivo
3 Apr 2012
65
0
6
Cosa indica questa parte di codice per lo spostamento del file dalla directory temporanea a quella di destinazione?
PHP:
unlink($file_temp);
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ERRORE : Lo spostamento del file nella destinazione non è riuscito
"models/" è una sotto cartella della cartella dove si trova lo script php,
deve avere tutte le proprietà di lettura / scrittura attive
e (credo) le debbano avere anche tutte le cartelle soprastanti,
conviene quindi usare una cartella con un path specifico isolato dal resto

Il file non è del tipo corretto.
il tipo restituito é "application/octet-stream" che va aggiunto nella lista dei tipi accettati


unlink($file_temp);
cancella il file temporaneo di upload per non lasciare file inutili in giro
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
Ora ho fatto un'altra prova...
Ho preso un file in .php e ovviamente me lo ha rifiutato. Gli ho cambiato l'estensione in .jpg per creare un FAKE ed il risultato è stato questo:
Lo spostamento non è avvenuto come negli altri casi, però non so se lo ha riconosciuto come un FAKE o se lo ha digerito così come proposto.
ho fatto la tua stessa prova, ed è stato riconoscito per quello che è e rifiutato
Cattura.PNG
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
Allora, la cartella models ha i permessi 777, ed ho provato a darglieli anche alla www e pure alla var che sta sopra, il che mi sembra assurdo perché lascerei il server esposto a rischi, comunque, continua a dirmi che lo spostamento non riesce.

application/octet-stream
lo devo aggiungere in testa a $allowed_type=array ??
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
Allora, la cartella models ha i permessi 777, ed ho provato a darglieli anche alla www e pure alla var che sta sopra, il che mi sembra assurdo perché lascerei il server esposto a rischi, comunque, continua a dirmi che lo spostamento non riesce.
infatti ho scritto di usare una cartella specifica separata dagli script e dalla struttura www
(avevo scritto : conviene quindi usare una cartella con un path specifico isolato dal resto)

application/octet-stream
lo devo aggiungere in testa a $allowed_type=array ??
si
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
ho provato ad aggiungerlo ma un file .php cambiandogli estensione in .jpg , lo riconosce come Type : image/jpeg
dunque aggiungendo 'application/octet-stream',
nel $allowed_type=array
non è cambiato nulla.
Caosa sbaglio?
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
Il file php per l'upload (che ho chiamato test3.php) sta nella radice del webserver che è appunto /var/www e la directory dove intenderei spostare i file caricati (cioè models) sta sempre in /var/www.
Come potrei separarla dalla struttura WWW, non potrei farlo funzionare?
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
ho provato ad aggiungerlo ma un file .php cambiandogli estensione in .jpg , lo riconosce come Type : image/jpeg
vedi post #44 è il risultato, positivo, del caricamento di un file php con l'estensione modificata in jpg

dunque aggiungendo 'application/octet-stream',
nel $allowed_type=array
non è cambiato nulla.
Caosa sbaglio?
hai scritto male la definizione ....
hai modificato uno script e ne esegui uno diverso ....
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
Il file php per l'upload (che ho chiamato test3.php) sta nella radice del webserver che è appunto /var/www e la directory dove intenderei spostare i file caricati (cioè models) sta sempre in /var/www.
Come potrei separarla dalla struttura WWW, non potrei farlo funzionare?
non ho conoscenze di Linux/Unix,
ma separiamo i problemi,
penso tu possa creare una cartella nella root e darle i permessi, giusto per le prove di caricamento,
successivamente si ragionerà sulla cartella e permessi di accesso
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
la definizione l'ho inserita in questo modo...
te l posto per intero:
PHP:
function GestisciUpload()
{
    $target_dir = "models/"; // terminato con la barra !

    $allowed_type=array(
   'application/octet-stream',
        'x-world/x-3dmf',
        'application/sla',
        'application/vnd.ms-pki.stl',
        'application/x-navistyle',
        'application/iges',
        'model/iges',
        'application/dxf',
        'application/acad',
        'image/vnd.dwg',
        'image/x-dwg',
        'image/png',
        'image/gif',
        'image/jpeg',
        'image/pjpeg'
    );
lo script che vado ad eseguire è il "test3.php"
dunque in locale l'indirizzo che richiamo per fare i test è il seguente:
non ne ho altri.
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
non ho conoscenze di Linux/Unix,
ma separiamo i problemi,
penso tu possa creare una cartella nella root e darle i permessi, giusto per le prove di caricamento,
successivamente si ragionerà sulla cartella e permessi di accesso
Si certo, posso creare cartelle dove voglio, ma la "root" del webserver è "/var/www" mentre la root del sistema operativo (Linux) è semplicemente "/".
Io posso creare tranquillamente una directory anche in / (root) e dargli i permessi che voglio, ma copiargli poi dentro un file proveniente da un upload sul server web, non credo che possa funzionare.
Comunque stasera o domani pomeriggio provo. Ora devo lasciare per andare al lavoro.
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
Niente da fare! Ho provato di tutto ma non c'è verso di far copiare alcun file in nessuna directory, nemmeno con il percorso assoluto.
Non riesco veramente a comprendere per quale ragione a te funziona e a me no!
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
credo ci siano limitazioni per php ad accedere alle cartelle,
ho trovato informazioni ricercando "Linux folder permissions for php upload"
leggi i primi articoli che escono, riportano informazioni sulla configurazione per Linux-php
segui i passi e vedi se riesci a trovare la giusta configurazione
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
prova anche ad aprire una nuova discussione nell'area Linux,
chiedendo se qualche persona conosce la configurazione specifica per l'upload con php
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
per cortesia, segui questi passi,
- sostituisci nello script la cartella "models/" con la cartella "/tmp/" ( attento alle barre )
- apri la pagina di upload
- seleziona il file da inviare ( possibilmente "giusto" ) senza "submit"
- identifica nella cartella /tmp/ il file temporaneo che è stato inviato al server ( esempio, /tmp/phpjlpbwo o /tmp/phproQuTd )
- clicca "submit" e controlla che il risultato sia positivo, in particolare deve esistere, in "/tmp/" il file con il nome "giusto" ed il file temporaneo cancellato
fai sapere grazie
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
Domanda...
Se elimino questa riga:
PHP:
    unlink($file_temp);
In teoria dovrei trovare il file nella tmp?
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
no non devi modificare lo script,

descrivo il funzionamento con Windows,
scelgo il file nella pagina html,
il file viene già trasferito al server prima del "submit" quindi si trova nella "/tmp/"
clicco "submit",
viene attivato lo script php che lo gestisce, ovvero come ti ho suggerito,
il file verrà scritto nella "/tmp/" e verrà cancellato il temporaneo
vero ?
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
Ieri sera ho provato ad eliminare la riga citata nel post precedente, ma nella /tmp nessuna traccia dei file uplodati. Allora ho cambiato i permessi della tmp da 777 a 755 e lo script restituisce ERRORE: 6 che sta ad indicare appunto che la tmp non è accessibile o non esiste.
Dunque significa che nemmeno in tmp si scrive il file, perciò non può copiarsi nella directory di destinazione.
Ora mi viene un dubbio...
Sto usando PHP7 ed ho letto che rispetto alle versioni precedenti hanno fatto molte modifiche sul lato della sicurezza.
Secondo voi potrebbe essere questo il problema?
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] Upload stesso file PHP 14
G [PHP] upload file in server: percorso cartella PHP 2
M Upload 4 file php PHP 11
M [PHP] Nome file, upload e rinominare PHP 2
M [PHP] upload di un file esistente overwrite PHP 1
N [PHP] Test per l'upload di file attraverso un bot Telegram PHP 2
C [PHP] Problema upload file (multiplo) PHP 1
S [PHP] Upload file... PHP 6
giancadeejay [PHP] Aggiornare DB tramite UPLOAD file .csv PHP 39
V File upload.php della guida, ma ha un errore PHP 8
francesco7 [Problema] esecuzione script Upload file in php PHP 0
I upload file php / javascript / mysql PHP 0
R upload file php PHP 5
L [PHP e FTP upload] controllo file allegato PHP 6
novello88 PHP upload file PHP 1
B [PHP - MySQL] Upload di un File PHP 6
M UPLOAD File in PhP PHP 3
S Upload File in Php PHP 7
nicocade [help] upload file con php!!! PHP 1
L Upload di un'immagine all'interno di un database usando php PHP 6
S Problemi con modulo upload video php (help!) PHP 0
F [PHP] Informazioni upload PHP 11
D [PHP] Upload intera cartella PHP 2
felino [PHP] Uploadify: upload immagini PHP 0
L [PHP] problema con upload e javascript (upload multiplo) Javascript 2
L [PHP] upload con errore PHP 2
V [PHP] Upload Excel in db PHP 0
jailbait [PHP] Upload immagine e stampa a schermo PHP 0
G PHP upload dati ed immagine PHP 7
F [PHP] Validare form prenotazione appuntamento tattoo con upload image PHP 0
D [PHP] Upload encrypt image PHP 0
P [PHP] Upload multiplo PHP 4
N [PHP] Problema upload immagini wordpress PHP 2
MarcoGrazia [PHP] Upload e successiva visualizzazione immagini in DB PHP 3
S PHP: Aiuto con upload immagini che si auto tuotano PHP 24
C [PHP] Upload immagine in un form con target _blank: non funziona PHP 7
A Upload multiplo di immagini in PHP PHP 3
L [php] upload controllo dimensione immagine PHP 8
F upload foto in php?????? PHP 2
R upload e ridimensionamento immagini in php PHP 0
R upload e ridimensionamento immagini in php PHP 1
L [PHP] Upload immagini e ridimensionamento automatico PHP 9
N [RISOLTO] Upload jpeg e pdf in folder (PHP) PHP 16
K [PHP] multi upload immagine da form PHP 60
L Passare ad uno script PHP i dati di un form incluso l'upload di un'immagine Ajax 0
N problema script php mysql multi upload immagini PHP 31
helpdesk Gif agli eventi di php Upload PHP 6
neo996sps [PHP + MySQL + Server Linux] Upload semi riuscito e query non eseguite PHP 2
Y [PHP/MySQL] Upload PDF PHP 3
O PHP ecommerce > da un sito funzionante > duplicazione riuscita ma non upload immagini PHP 19

Discussioni simili