|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2007
Messaggi: 14
|
[ASP] Impedire accesso diretto a file
Salve ragazzi
devo realizzare un software (ho una bozza in ASP, ma non avrei problemi a migrare ad altri linguaggi come il PHP, se fosse necessario) che visualizzi la lista di file e cartelle contenute in un percorso. Chi non si autentica mediante username e password non ha l'accesso alla pagina che mostra i file, e quindi non può accedervi. Problema: se mi loggo, e voglio accedere al file della lista chiamato 33.pdf, il browser richiama la pagina: http://archivio/view.asp?file=33.pdf Nessun problema fin qui... Infatti se non eseguo il login ed digito "a mano" sul browser l'indirizzo http://archivio/view.asp?file=33.pdf, la pagina mi restituisce un errore e mi invita ad eseguire l'accesso. Ma se apro il pdf, tra le proprietà del pdf reader riesco a vedere il percorso completo del server, ovvero http://archivio/documenti/33.pdf. Se digito "a mano" nel browser tale indirizzo, senza eseguire l'autenticazione, il documento 33.pdf viene visualizzato senza problemi! Come faccio ad evitare tale comportamento? Un utente non troppo smaliziato riuscirebbe in un attimo ad aggirare l'autenticazione. Io voglio che gli utenti NON conoscano il "vero" percorso server del documento. Ho provato con qualche settaggio su IIS, ma ad oggi non ho risolto nulla... Help! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2008
Messaggi: 3583
|
Non conosco bene IIS, ma su apache dovresti utilizzare il file .htaccess prova a vedere se c'è anche per IIS..
Inviato dal mio Nexus 5 con Tapatalk |
|
|
|
|
|
#3 | |
|
Junior Member
Iscritto dal: May 2007
Messaggi: 14
|
Quote:
Sì in effetti esiste, grazie Il contenuto del file web.config trovato con Google che dovrebbe fare al caso mio è il seguente: Codice:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="test/download.asp" />
</authentication>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"></modules>
</system.webServer>
<location path="myfolder/restricted">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
Ho provato ma non funziona nella mia configurazione, IIS restituisce un errore: Codice:
Errore HTTP 500.19 Codice errore: 0x80070021 Errore di configurazione: Impossibile utilizzare la sezione di configurazione in questo percorso. L'errore si verifica quando la sezione è bloccata a livello padre. Il blocco avviene per impostazione predefinita (overrideModeDefault="Deny") o è impostato esplicitamente da un tag di percorso con overrideMode="Deny" o con il precedente allowOverride="false".
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Io ho realizzato una cosa del genere con apache+php, ma ti garantisco che si può fare anche su IIS, te lo spiego in linea di principio.
Prima di tutto devi bloccare l'accesso diretto ai file tramite la configurazione del web server. Secondo, devi creare una pagina dinamica che, verificata l'autenticazione, produca come output il documento riservato; in questa pagina è importante modificare gli header http per far capire al browser che i dati non costituiscono codice html ma fanno parte di un file, in questo modo non vengono visualizzati nella pagina ma viene innescato un download. Naturalmente questa pagina potrà essere utilizzata per scaricare file diversi, pertanto ti conviene passare il nome del file come parametro tramite l'url. Terzo, opzionale, puoi configurare il web server in modo da nascondere la pagina dinamica e far sembrare all'utente che punti direttamente al file; su apache questo meccanismo si chiama url rewrite, so che esiste qualcosa di analogo su IIS. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:52.




















