Filtro richieste IIS 7.0 e riscrittura URL
IIS 7.0 e versioni successive include un modulo di filtro delle richieste basato sul filtro ISAPI URLScan per IIS 6.0. Il modulo consente di rafforzare la sicurezza dei server Web.
Il team di IIS ha rilasciato anche un modulo di riscrittura URL del componente aggiuntivo per IIS, che fornisce funzionalità per la modifica degli URL basata su regole. Anche se lo scopo principale del modulo di riscrittura URL è riscrivere i percorsi URL per le richieste, il modulo di riscrittura può essere usato anche come strumento di imposizione della sicurezza che consente di impedire l'accesso al contenuto del sito Web.
Questo articolo illustra le differenze tra questi due moduli e fornisce indicazioni su quali scegliere per rafforzare la sicurezza del server Web.
Filtro delle richieste e riscrittura url nella pipeline di elaborazione delle richieste IIS
Prima di tutto, è importante comprendere come il modulo di filtro delle richieste e il modulo di riscrittura si inserisce nella pipeline IIS. Il diagramma seguente illustra l'ordine relativo di questi due moduli:
Il modulo di filtro delle richieste viene eseguito all'inizio della pipeline di elaborazione delle richieste gestendo l'evento BeginRequest. Il modulo valuta i metadati della richiesta, ad esempio le intestazioni, la stringa di query, la lunghezza del contenuto e così via, per determinare se i metadati della richiesta corrispondono a qualsiasi filtro esistente. Se esiste una corrispondenza, il modulo genera una risposta 404 (File non trovato) e quindi tastiera il resto della pipeline IIS.
Se il modulo di filtro delle richieste non ha filtrato la richiesta, la richiesta viene passata al modulo successivo nella pipeline IIS, che potrebbe essere il modulo di riscrittura URL. Il modulo di riscrittura URL valuta la richiesta rispetto alle regole di riscrittura. Se una regola genera un reindirizzamento o invia una risposta personalizzata o interrompe la richiesta, il modulo di riscrittura genera una risposta appropriata e quindi collegamenti alla parte restante della pipeline IIS.
Si noti che il modulo di filtro delle richieste viene inserito prima del modulo di riscrittura URL. Questo avviene perché nell'architettura IIS, il modulo di filtro delle richieste viene considerato un componente gatekeeper che protegge il server Web da richieste dannose. Il modulo di riscrittura URL è considerato un componente di manipolazione URL basato su server che funziona sugli URL già filtrati dal modulo di filtro delle richieste. È possibile considerare la riscrittura degli URL come logica dell'applicazione basata su server, analogamente alle applicazioni ASP.NET che possono eseguire anche la riscrittura o il reindirizzamento. Il filtro delle richieste è una prima linea di difesa, mentre il rewriter URL può essere una seconda barriera di sicurezza più specifica dell'applicazione. Per altri dettagli, vedere il post di blog "Interazione tra il rewriter URL e i moduli di filtro delle richieste per IIS7" nel sito Web IIS.
Differenze tra il filtro delle richieste e la riscrittura degli URL
Le differenze concettuali tra il filtro delle richieste e la riscrittura degli URL sono le seguenti:
- Il filtro delle richieste è progettato e ottimizzato esclusivamente per gli scenari di sicurezza.
- La riscrittura degli URL può essere applicata per un ampio set di scenari; gli scenari di sicurezza sono solo un subset di questi.
Tenendo presente questo aspetto, è possibile confrontare le funzionalità di ogni modulo che può essere usato per gli scenari di sicurezza. È consigliabile considerare le categorie seguenti:
- Criteri di filtro. Quale tipo di input può essere usato per prendere una decisione sul blocco di una richiesta? Inoltre, quali condizioni è possibile usare per esprimere la logica di blocco delle richieste?
- Azioni di blocco delle richieste. Quali azioni è possibile eseguire quando una richiesta soddisfa i criteri di filtro?
- Impatto sulle prestazioni. In che modo la richiesta di filtro e la riscrittura degli URL influiscono sulle prestazioni del server Web?
Criteri di filtro
Nella tabella seguente sono elencati i possibili criteri di filtro e viene illustrato il modo in cui ogni modulo li supporta.
Criterio | Supportato dal modulo di filtro delle richieste? | Supportato dal modulo di riscrittura URL? |
---|---|---|
Eseguire l'analisi del percorso URL richiesto | Sì, usando la ricerca sottostringa | Sì, usando modelli regex e con caratteri jolly |
Controllare la lunghezza dell'URL | Sì | No |
Analizza stringa di query | No | Sì, usando modelli regex e con caratteri jolly |
Controllare la lunghezza della stringa di query | Sì | No |
Controllare i verbi HTTP | Sì | Sì |
Controllare la lunghezza del contenuto della richiesta | Sì | No |
Analizzare le intestazioni HTTP | No | Sì, usando modelli regex e con caratteri jolly |
Controllare la lunghezza delle intestazioni HTTP | Sì | No |
Analizzare le variabili del server | No | Sì |
Controllare l'indirizzo IP o il nome host del mittente | No* | Sì |
* Il modulo Restrizione IP in IIS può essere usato per bloccare le richieste da indirizzi IP e nomi host specifici.
azioni Request-Blocking
Il modulo di filtro delle richieste ha una sola azione, che viene eseguita quando una richiesta corrisponde a un criterio di filtro. L'azione consiste nel restituire il codice di stato 404 (File non trovato).
Il modulo di riscrittura URL offre un set di opzioni molto più ampio se una richiesta deve essere bloccata, tra cui:
- L'URL richiesto può essere riscritto in un altro URL. Ad esempio, per impedire il collegamento rapido dell'immagine, è possibile riscrivere un URL in un file di immagine segnaposto per tutte le richieste provenienti da un dominio di terze parti.
- Il client Web può essere reindirizzato a un URL diverso.
- Un codice di stato HTTP a scelta può essere inviato al client Web. Ad esempio, è possibile inviare una risposta di stato 401 (non autorizzata) per le richieste che corrispondono a criteri di filtro specifici.
- La richiesta HTTP può essere interrotta eliminando la connessione socket. In questo modo, il client Web non ottiene informazioni sul server Web.
Impatto sulle prestazioni
Entrambi i moduli sono stati implementati per avere il minor impatto possibile sulle prestazioni del server Web IIS. Esistono tuttavia le differenze di prestazioni importanti seguenti tra questi moduli:
- Il modulo di riscrittura URL si basa principalmente sui modelli di espressione regolare. La valutazione delle espressioni regolari è un'operazione costosa e, se si definiscono molte regole di riscrittura complesse, si potrebbe notare un impatto notevole sulla velocità effettiva del server Web.
- Il modulo di filtro delle richieste non usa espressioni regolari o altri criteri di ricerca. Esegue semplicemente una ricerca di sottostringa, che può avere un impatto notevolmente inferiore sulla velocità effettiva del server Web.
Scelta tra il filtro delle richieste e la riscrittura dell'URL
Se si sceglie tra il filtro delle richieste e la riscrittura dell'URL per rafforzare la sicurezza del server Web, la regola generale consiste nell'iniziare con il filtro delle richieste. Il filtro delle richieste è ottimizzato per gli scenari di sicurezza e il set di funzionalità sarà probabilmente sufficiente per implementare i requisiti di sicurezza. Se si dispone di un requisito che non può essere risolto dal modulo di filtro delle richieste, usare il modulo di riscrittura URL per implementare tale requisito e lasciare il resto delle attività di sicurezza al modulo di filtro delle richieste. In questo modo si riduce l'impatto sulle prestazioni del modulo di riscrittura URL, con la quantità minima di regole di riscrittura per il server da elaborare.