• Home
  • Forum
  • Fare Web
  • PHP

[PHP] upload di file in cartella e sua sicurezza

  • Creatore Discussione Creatore Discussione VAik
  • Data di inizio Data di inizio 27 Set 2016
Prec.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
Succ.
Primo Prec. 3 di 7 Succ. Ultimo

xnotar

Utente Attivo
3 Apr 2012
65
0
6
  • 11 Dic 2016
  • #41
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
Clicca per allargare...

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: 11 Dic 2016

xnotar

Utente Attivo
3 Apr 2012
65
0
6
  • 11 Dic 2016
  • #42
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.205
207
63
Lombardia
  • 11 Dic 2016
  • #43
ERRORE : Lo spostamento del file nella destinazione non è riuscito
Clicca per allargare...
"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.
Clicca per allargare...
il tipo restituito é "application/octet-stream" che va aggiunto nella lista dei tipi accettati


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

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 11 Dic 2016
  • #44
xnotar ha scritto:
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.
Clicca per allargare...
ho fatto la tua stessa prova, ed è stato riconoscito per quello che è e rifiutato
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
  • 11 Dic 2016
  • #45
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.205
207
63
Lombardia
  • 11 Dic 2016
  • #46
xnotar ha scritto:
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.
Clicca per allargare...
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 ??
Clicca per allargare...
si
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
  • 11 Dic 2016
  • #47
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
  • 11 Dic 2016
  • #48
marino51 ha scritto:
nfatti ho scritto di usare una cartella specifica separata dagli script e dalla struttura www
Clicca per allargare...
cosa intendi per cartella specifica separata?
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
  • 11 Dic 2016
  • #49
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.205
207
63
Lombardia
  • 11 Dic 2016
  • #50
xnotar ha scritto:
ho provato ad aggiungerlo ma un file .php cambiandogli estensione in .jpg , lo riconosce come Type : image/jpeg
Clicca per allargare...
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?
Clicca per allargare...
hai scritto male la definizione ....
hai modificato uno script e ne esegui uno diverso ....
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 11 Dic 2016
  • #51
xnotar ha scritto:
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?
Clicca per allargare...
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
  • 11 Dic 2016
  • #52
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:
http://127.0.0.1/test3.php
Clicca per allargare...
non ne ho altri.
 

xnotar

Utente Attivo
3 Apr 2012
65
0
6
  • 11 Dic 2016
  • #53
marino51 ha scritto:
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
Clicca per allargare...
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
  • 11 Dic 2016
  • #54
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.205
207
63
Lombardia
  • 11 Dic 2016
  • #55
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.205
207
63
Lombardia
  • 11 Dic 2016
  • #56
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.205
207
63
Lombardia
  • 12 Dic 2016
  • #57
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
  • 12 Dic 2016
  • #58
Domanda...
Se elimino questa riga:
PHP:
    unlink($file_temp);
In teoria dovrei trovare il file nella tmp?
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 12 Dic 2016
  • #59
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
  • 12 Dic 2016
  • #60
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: 12 Dic 2016
Prec.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
Succ.
Primo Prec. 3 di 7 Succ. Ultimo
Devi accedere o registrarti per poter rispondere.

Discussioni simili

S
[PHP] Upload stesso file
  • solari77
  • 24 Giu 2019
  • PHP
Risposte
14
Visite
3K
PHP 5 Lug 2019
mr.x
M
G
[PHP] upload file in server: percorso cartella
  • giacomo9783
  • 30 Dic 2018
  • PHP
Risposte
2
Visite
2K
PHP 31 Dic 2018
giacomo9783
G
M
Upload 4 file php
  • Maxi_007
  • 29 Ott 2018
  • PHP
Risposte
11
Visite
3K
PHP 9 Nov 2018
macus_adi
M
[PHP] Nome file, upload e rinominare
  • Marco Candian
  • 20 Lug 2018
  • PHP
Risposte
2
Visite
3K
PHP 20 Lug 2018
Marco Candian
M
M
[PHP] upload di un file esistente overwrite
  • Marchese M
  • 22 Feb 2018
  • PHP
Risposte
1
Visite
2K
PHP 22 Feb 2018
macus_adi
N
[PHP] Test per l'upload di file attraverso un bot Telegram
  • nino2018
  • 14 Feb 2018
  • PHP
Risposte
2
Visite
2K
PHP 15 Feb 2018
nino2018
N
C
[PHP] Problema upload file (multiplo)
  • ciccioroky
  • 3 Lug 2017
  • PHP
Risposte
1
Visite
2K
PHP 3 Lug 2017
borgo italia
S
[PHP] Upload file...
  • stefanoxjx
  • 24 Feb 2017
  • PHP
Risposte
6
Visite
2K
PHP 9 Mar 2017
stefanoxjx
S
[PHP] Aggiornare DB tramite UPLOAD file .csv
  • giancadeejay
  • 1 Dic 2016
  • PHP
  • 2
Risposte
39
Visite
6K
PHP 6 Dic 2016
borgo italia
V
File upload.php della guida, ma ha un errore
  • VAik
  • 20 Apr 2016
  • PHP
Risposte
8
Visite
2K
PHP 29 Apr 2016
Messiah84
M
[Problema] esecuzione script Upload file in php
  • francesco7
  • 31 Ago 2014
  • PHP
Risposte
0
Visite
1K
PHP 31 Ago 2014
francesco7
I
upload file php / javascript / mysql
  • Ivano Cardassi
  • 12 Ago 2014
  • PHP
Risposte
0
Visite
1K
PHP 12 Ago 2014
Ivano Cardassi
I
R
upload file php
  • rickypictures
  • 6 Giu 2014
  • PHP
Risposte
5
Visite
2K
PHP 10 Giu 2014
marino51
L
[PHP e FTP upload] controllo file allegato
  • luigi777
  • 19 Giu 2012
  • PHP
Risposte
6
Visite
3K
PHP 20 Giu 2012
luigi777
L
PHP upload file
  • novello88
  • 6 Mar 2012
  • PHP
Risposte
1
Visite
2K
PHP 7 Mar 2012
maxbossi
B
[PHP - MySQL] Upload di un File
  • B-enemy
  • 17 Set 2009
  • PHP
Risposte
6
Visite
3K
PHP 19 Set 2009
B-enemy
B
M
UPLOAD File in PhP
  • moscacieca
  • 28 Gen 2009
  • PHP
Risposte
3
Visite
3K
PHP 30 Gen 2009
moscacieca
M
S
Upload File in Php
  • superciccio14
  • 31 Mag 2006
  • PHP
Risposte
7
Visite
2K
PHP 31 Mag 2006
superciccio14
S
[help] upload file con php!!!
  • nicocade
  • 2 Feb 2006
  • PHP
Risposte
1
Visite
1K
PHP 16 Feb 2006
metalgemini
L
Upload di un'immagine all'interno di un database usando php
  • lollo_x
  • 9 Giu 2020
  • PHP
Risposte
6
Visite
2K
PHP 12 Giu 2020
MarcoGrazia
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?