Domanda

Diciamo che ho un seguente in un web.config:

<allow roles="Developers" />
<deny users="*"/>

Ciò blocca l'accesso su .aspx, .asmx e altri tipi di file .NET, ma consente comunque agli utenti non autorizzati di aprire file statici come image.jpg. Capisco perché a web.config non vengono richieste informazioni di autorizzazione quando qualcuno chiede image.jpg (non è un tipo .NET e IIS può ignorarlo), ma come posso bloccare un'intera applicazione?

I consigli che ho trovato online includono:

  • crea una <location> voce per la directory in questione e IIS / .NET la raccoglierà. (Non sembra.)
  • devi scrivere il tuo filtro ISAPI e mappare le estensioni di tutti i file sensibili.
  • non è necessario scrivere il proprio filtro ISAPI: basta mappare le estensioni su aspnet_isapi.dll.
  • non è necessario modificare IIS, basta creare una voce httpHandler in web.config per le estensioni. (Preferirei davvero non provare a farlo per ogni estensione nell'applicazione.)

Niente di tutto questo funziona così facilmente come ricordo che mi trovo in Apache. Qual è la cosa più semplice che potrebbe funzionare per chiedere a un visitatore una password e non servire alcun file (statico o no) a qualsiasi utente che non ce l'ha?

È stato utile?

Soluzione

Abilita mapping dei caratteri jolly per IIS 6 . Questo invierà tutti i file attraverso la pipeline ASP.NET, garantendo l'autent del modulo per tutti i file. Degraderà le prestazioni (non so quanto).

Per IIS 5, um, aggiornare a IIS 6.

Elenchi 4 idee:

    La posizione
  • funziona solo se è stata mappata la wild card (o sono state mappate estensioni specifiche).

  • Chi vuole scrivere un filtro isapi? Non puoi farlo facilmente in lingue gestite a meno che tu non abbia IIS7. E chi vuole scrivere un filtro isapi c ++?

  • la mappatura dei caratteri jolly funziona con le avvertenze (prestazioni) sopra riportate

  • Ancora una volta, l'ultima opzione non funzionerà senza registrare quelle estensioni specifiche con IIS e instradarle attraverso aspnet.

Altri suggerimenti

Un bel modo semplice è quello di aggiornare a IIS 7, ora ha una pipeline integrata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top