29 messaggi dal 11 novembre 2004
Ciao, il mio problema è il seguente. Ho un sito in cui l'utente per poter accedere deve loggarsi con user e password.
L'utente è definito sul server (Win2003) e,tramite un API, ne verifico le credenziali.
Ora la mia esigenza è la seguente; in una directory del sito ho creato tante cartelle, ognuna per ogni utente. Vado poi a popolare queste directory con file pdf che hanno dati specifici per utente.
Come posso fare per impedire che un utente vada ad aprire il file di
un altro ?
Mi spiego meglio con un esempio.
L'utente 'UTE01' ha il suo report (prova.pdf) nella directory
www.miosito.it/Report/ute01
Vorrei evitare che andasse sul browser ad inserire
www.miosito.it/Report/ute03/prova.pdf
e gli venisse visualizzato il report dell'utente 'UTE03'
Si può fare ?
Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
dovresti fare in modo che la cartella /Report/ non abbia i diritti di lettura. Così facendo, eviti che i file pdf possano essere scaricati se l'utente ne digita il percorso nella barra degli indirizzi.
Puoi togliere i diritti di lettura ad una cartella agendo su IIS oppure, se sei in hosting, ci dovrebbe essere una cartella predisposta a tale scopo (lo è per esempio la /mdb-database/ su aruba).

Fatto questo nessun utente potrà più scaricare direttamente i file pdf. Per ripristinare la funzionalità di download, scriviti una pagina asp che prelevi lei il file pdf e lo serva al client.
Passa alla pagina asp il nomefile da scaricare. Esempio:

download.asp?nomefile=prova.pdf

La pagina asp saprà qual è l'utente che ha effettuato la richiesta (presumo che i file possano essere scaricati solo dopo login) e lo andrà a cercare nella cartella relativa.
Ad esempio, se stai usando le variabili di Sessione per riconoscere gli utenti loggati, puoi fare:

<%
Dim idutente, nomefile, percorso
idutente = Session("idutente")
nomefile = Replace(Request.QueryString("nomefile"), "\", "/")
if Instr(nomefile, "/") > 0 then
nomefile = Mid(nomefile, InstrRev(nomefile, "/")+1)
end if
percorso = "/Report/ute" & idutente & "/" & nomefile
%>

la variabile percorso conterrà l'indirizzo del file da scaricare. Ora Non devi far altro che forzare il download usando ADO. Leggi questo articolo per sapere come fare:
http://www.aspitalia.com/script/524/DownloadSicuroFilesASP.aspx


Modificato da BrightSoul il 06 febbraio 2006 17.39 -

Enjoy learning and just keep making
29 messaggi dal 11 novembre 2004
Grazie BrightSoul ,
Ho risolto il problema utilizzando ADODB.Stream; questo mi consente di avere i file in una directory al di fuori della virtual dir del sito (Ad esempio C:\Report\Utente01).
In questo modo visualizzo con una pagina l'elenco dei file del singolo utente e,quando questo clicca sul file, apro una pagina asp che ne effettua il download con ADODB.Stream

Grazie
ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.