Proteggere file caricati dall'esterno ma renderli accessibili per gli utenti loggati.

otto9due

Utente Attivo
22 Feb 2014
591
25
28
In pratica ho quest esigenza. in un'area riservata, protetta da login do la possibilità di caricare dei file su una directory ( server condiviso ).
Ora non vorrei che i file fossero accessibili da link per tutti. Ma solo per gli utenti loggati, e cmq non dall'esterno.
Ho trovato alcune soluzioni online tra cui questa:
IMpostare per la cartella questo .htaccess

Codice:
<Files ~ ".+">
Order allow,deny
Deny from all
Satisfy All
</Files>

e poi usare una cosa del genere per recuperare il file e restituirlo al client:

PHP:
// file download
header("Content-Type: application; name=".$nome_file);
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$size_file);
header("Content-Disposition: inline; filename=".$nome_file);
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: private");
header("Pragma: public");
 
readfile($percorso_assoluto.'/assets/doc/'.$cartella.'/'.$nome_file);

Per il momento sto usando xampp in locale e se provo a fare questa cosa mi restituisce un errore 403, forbidden.
Può essere che per percorso assoluto si intenda il percorso delle cartelle del server e non quello web?
Quale soluzione posso adottare per ottenere il risultato sperato?
Grazie in anticipo.
 

otto9due

Utente Attivo
22 Feb 2014
591
25
28
Forse ho trovato una soluzione, la posto tante volte può servire ad altri.
PHP:
//$percorso_assoluto = $_GET['path'];
$percorso_assoluto = $_SERVER['DOCUMENT_ROOT'];
$cartella = strtolower($_GET['dir']);
$nome_file = $_GET['file'];
$file_complte =  $percorso_assoluto.'/assets/doc/'.$cartella.'/'.$nome_file;

// file download
if (file_exists($file_complte)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file_complte).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file_complte));
    readfile($file_complte);
    exit;
}else{
    echo 'Nessun file Trovato';
}

Qui ci faccio arrivare i dati in get e mi fa scaricare il file contenuto in una cartella forbidden.
Credete possa funzionare anche su un server reale LAMP?
 

thanatos

Utente Attivo
29 Gen 2021
38
0
6
Roma
Perché non crei una variabile di sessione al login e poi verifichi all'inizio dello script della pagina del file se quella variabile è settata?
Mi spiego meglio:
Pagina di login
PHP:
session_start()

//Login avvenuto
$SESSION["auth"] = 1
//Redirect alla pagina con i file

Pagina file
PHP:
session_start()

if ($SESSION["auth"] == 1) {
  //Fai un Echo dell'html della pagina con i file
} else {
  //Mostri errore
}

Non fare caso alla sintassi del codice potrebbe essere errata (sono abituato agli aiuti del software )
 
Discussioni simili
Autore Titolo Forum Risposte Data
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
anton Proteggere un file con htaccess Apache 0
anton Proteggere un file su host HTML e CSS 9
S proteggere download dei file PHP 7
M proteggere un file testuale da accesso diretto PHP 4
C Proteggere file sul server Apache 2
M [htaccess] Proteggere file con password Web Server 1
S Proteggere file e dati nel FTP Web Server 0
R [c#] Proteggere il codice dell'applicazione C/C++ 0
S [PHP] proteggere pagine PHP 10
B Proteggere cartella Apache ma non le sottocartelle!!! Apache 0
G Proteggere le tabelle in access MS Access 0
P Sistema migliore per proteggere le immagini? Discussioni Varie 8
A Proteggere Cartella con .htaccess su Xoom.it Web Server 2
max_400 Proteggere i cookie PHP 7
M Proteggere PHP PHP 4
Jam1 proteggere foto con watermark da accessi tramite $_GET[''] PHP 16
max_400 Proteggere login con autenticazione database PHP 19
maurodefilippis Software Per DRM per proteggere pdf ed epub Windows e Software 1
asevenx proteggere dati con password sicura PHP 8
max_400 Nascondere indirizzo o visualiz. un altro oppure Proteggere pagina php ricevente PHP 6
S [VB.NET] Proteggere le applicazioni .NET Framework 0
I proteggere le pagine internet PHP 25
M Proteggere più pagine con password PHP 12
R Proteggere una pagina di un sito con password PHP 23
G php - codice per proteggere le pagine PHP 10
M Proteggere un intero sito con .htaccess PHP 1
M come posso proteggere le mie immagini? Javascript 5
Z proteggere pagine Classic ASP 2
Maverick1000tt Proteggere pagina html HTML e CSS 2
M Proteggere una pagina con password usando ASP Classic ASP 6
C Come proteggere le immagini Webdesign e Grafica 1
D Proteggere immagini HTML e CSS 3
grottafelix Tutorial Asp: come proteggere le pagine Supporto Mr.Webmaster 6
peppoweb Proteggere PHP: guida passo passo PHP 0
E fpdf salvare e aprire il file PHP 4
I asp | includere un file, indirizzo depositato in un db Classic ASP 0
felino [Windows 10] Scompare icone, file e collegamenti sul desktop Windows e Software 0
S passare un valore da un form a un file .php con metodo post PHP 4
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
G file CSS contenente variabili HTML e CSS 1
M Creare traccia di download file sul server HTML e CSS 2
I elimina file PHP 1
I cerca file sottocartella unlink file PHP 0
I sessione username scarica file PHP 1
S Aggiornare percorso file collegati MS Access 0
I lista file sottocartella elimina file PHP 3
F comando di inclusione file audio in I-Pad non funziona HTML e CSS 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
I visualizza file sottocartella elimina singolo file PHP 1

Discussioni simili