Come bloccare i percorsi in ASP.NET MVC?

Sto giocando con MVC 4 per la prima volta per verificare cosa è stato modificato / aggiunto / ecc rispetto a MVC 3.

Per iniziare, ho creato un’applicazione Web MVC 4 vuota e ho iniziato a build da zero.

Una delle prime cose che ho notato è diversa in MVC 4 è il fatto che le seguenti impostazioni web.config non hanno alcun effetto sull’accessibilità delle pagine web:

        .....  

Tornando in MVC 3, le impostazioni di authorization sopra negheranno a tutti gli utenti anonimi di accedere a qualsiasi contenuto all’interno del sito. Tuttavia, se aggiungo le stesse impostazioni a un file MVC4 Web.config, un anonimo ha libertà di accesso su un URL che sceglie.

Cosa devo fare in MVC 4 per bloccare tutti i percorsi come ho fatto in MVC 3?

Dai un’occhiata a Protezione della tua app ASP.NET MVC 4 e del nuovo attributo AllowAnonymous .

Non è ansible utilizzare i file di routing o web.config per proteggere l’applicazione MVC (Qualsiasi versione). L’unico modo supportato per proteggere l’applicazione MVC consiste nell’applicare l’attributo Autorizza …

Citazione

MVC utilizza le rotte e non associa gli URL a percorsi di file fisici come WebForms, PHP e server Web tradizionali. Pertanto, l’uso di web.config aprirà sicuramente un buco di sicurezza nel tuo sito.

Il team del prodotto avrà una comunicazione se questo cambia in futuro, ma per ora è senza eccezione la regola.

Esempi:

Inizia con il progetto ASP.Net MVC predefinito (internet / intranet).

Modifica l’aggiunta web.config:

        

Esegui il progetto, per impostazione predefinita utilizzerai la rotta predefinita /Home/Index e vedrai il contenuto, ignorando semplicemente web.config senza apportare modifiche al modello predefinito. Perché? Poiché la pipeline ASP.Net sta confrontando l’URL richiesto con la posizione specificata nel web.config. Tuttavia, dopo che l’evento di authorization è stato eseguito nella pipeline, il routing ha luogo (routing predefinito o routing personalizzato) e consente l’accesso all’area presumibilmente limitata.

Inoltre, qualsiasi MVC Redirect() supererà anche le stesse misure di sicurezza, come di nuovo il routing avviene dopo l’evento Pipeline di authorization.

Non credo che qualcuno dovrebbe accettare una sorta di sicurezza lavorativa . Fallo correttamente la prima volta, non essere pigro e usa qualcosa che non è stato progettato per essere utilizzato con una tecnologia specifica.