Newsgroup: it.comp.www.php
Titolo: File temporanei in PHP

La domanda nasce dalla discussione relativa al mio precedente post su un 
"visualizzatore remoto di files".
Sono quasi sicuro di conoscere la risposta ma voglio trovare conferma alla 
mia idea.
In PHP ovviamente l'unico controllo che si pu� avere � lato server. La 
domanda �: questo vale anche per i file temporanei?
Ovvero: se io realizzo uno script php che permetta a un utente di 
visualizzare il contenuto di un file PDF tramite una apposita classe, c'� 
qualche possibilit� di controllare dove e come vengono salvati i vari 
spezzoni temporanei del file sul pc dell'utente? Mi verrebbe da dire di no 
per� ho pensato alla possibilit� di dare indicazioni al browser mediante i 
seguenti header:
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");                  // Date 
in the past
 header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
 header('Cache-Control: no-store, no-cache, must-revalidate');     // 
HTTP/1.1
 header('Cache-Control: pre-check=0, post-check=0, max-age=0');    // 
HTTP/1.1
 header ("Pragma: no-cache");
 header("Expires: 0");
Queste indicazioni sono sufficienti per garantire che sul pc client non 
vengano salvati file temporanei di nessun tipo?
Prima di concludere faccio una PRECISAZIONE IMPORTANTE.
L'utente non ha nessun interesse a salvare in posizioni "non sicure" i dati 
che sta visualizzando: o meglio, sa che non si deve fare ed � anche suo 
interesse non infrangere le regole.
Il problema sono eventuali altri utenti che hanno accesso allo stesso PC 
utilizzato dall'utente autorizzato e che NON DEVONO ASSOLUTAMENTE poter
vedere i files temporanei rimasti.
L'utente autorizzato ovviamente pu� salvare quello che vuole, l'importante � 
che il materiale non vada in mano ad altri (e questo � interesse di TUTTI
gli utenti autorizzati).
Quindi a me interessa solo capire se l'uso di alcune intestazioni come 
quelle che vi ho scritto, pu� mettermi al sicuro da eventuali salvataggi 
indesiderati di spezzoni dei files visualizzati (a opera del browser) o se 
alcuni browser ignorano certe direttive? (Ancora una volta vi ricordo che 
l'utente non ha nessun interesse a FREGARE il sistema utilizzando un browser 
specifico o adottando qualsivoglia accorgimento per salvare i file 
temporanei che invece, in condizioni normali, non verrebbero salvati).
Per capirci: mi andrebbe bene persino un controllo Javascript che elimina 
qualsiasi residuo di file temporaneo dal pc client tanto son sicuro che un 
utente non disabiliter� mai l'esecuzione dei Javascript sul suo browser 
(principalmente perch� � nel suo stesso interesse non farlo).
Grazie anticipatamente per la disponibilit�
--
Elminster 

 
no ï¿œ follia, il sistema operativo dell'utente tratta i temporanei come
gli pare.

 domanda è: questo vale anche per i file temporanei?
Si`.
Tu puoi passare tutti i comandi che vuoi al browser, ma
1- non sei sicuro che li rispetti.
2- non entra in gioco solo il browser.
Per esempio, quando imposti il caching a "no" per una pagina HTML, quella 
viene messa in RAM e il browser la visualizza direttamente, ma quando 
passi un PDF, il browser la deve mettere da qualche parte per passarla 
all'Acrobat Reader.
Dove sia "qualche parte" non lo puoi sapere. Presumo che il file venga 
messo almeno in C:\windows\temp (sotto Windows) o in /tmp (sotto Linux).
Stessa cosa per zip e mp3, e in generale per qualsiasi cosa non sia HTML e 
CSS, cioe` che non venga gestita direttamente dal browser.
Passando al tuo problema, io non lo farei in PHP, non via web almeno, ma 
farei un client apposito in Java, Python, C# o qualsiasi altra cosa 
(compreso PHP+Gtk, per esempio), che gestisca tutto, dall'autenticazione 
al download alla creazione di un file temporaneo, al richiamo del 
visualizzatore e alla cancellazione del file temporaneo alla fine.
Sperando che non crashi prima di aver cancellato il file. :)
Bye.

 gli pare.
Era quello che temevo. Quindi praticamente mi stai dicendo che per 
realizzare il viualizzatore remoto di files di cui parlavo nell'omonimo 
thread sono obbligato a buttarmi su Java vero?
--
Elminster 


Java è un linguaggio. Non capisco come possa aggiungere "magia" al
sistema. Prima pensa in teoria come dovrebbe funzionare, poi fatti uno
schemino di quello che dovrebbero fare server e client, poi cerca sul
web se esiste qualcosa di già fatto. Se non esiste, scegli un
linguaggio di programmazione con cui stai comodo e implementa la tua
soluzione.

Alessandro Pellizzari ha scritto:

così il problema diventa:
* distribuzione di un client nativo e relativo runtime se usi java
python c# o qualsiasi cosa che non produca un eseguibile nativo e pure
senza bisogno di dipendenze
* continui a non essere sicuro di nulla: ad esempio word comunque sia
crea dei file temporanei dove gli pare a lui e che alle volte restono
* anche se i file temporanei vengono creati e cancellati correttamente e
questo è tutto da verificare, ci sono software che in una passata ti
recuperano i dati, meglio allora invece che cancellarli riempirli di zeri.
il problema non ha comunque soluzione se una cosa la puoi visualizzare
la puoi copiare.

 soluzione.
Scusa ma mi sembra che Elminster stia cercando di decidere se
implementare il tutto in un'applicazione web-based o in
un'applicazione stand-alone.
Non è questione di Java, C o Python... tra PHp (o ASP o JSP) e Java
cambia molto. Non si tratta solo di scegliere un linguaggio di
programmazione in cui "sta comodo", alcune cose con alcuni linguaggi
si possono fare, con altri no.

 la puoi copiare.- Nascondi testo citato
Ma ha spiegato più volte che quello che vuole impedire non è che gli
utenti copino i files che possono vedere, bensì che altri utenti dello
stesso pc possano accedere a ciò che un utente ha visto in precedenza.
L'ha spiegto in tutti i modi possibili.