Verificare l'accesso ai file mediante l'UrlAuthorizationModule di ASP.NET

di Marco Leoncini, in ASP.NET, ASP.NET 2.0, ASP.NET 3.5,

ASP.NET regola l'accesso all'Url richiesto utilizzando un particolare HttpModule chiamato UrlAuthorizationModule, il quale ricava le regole applicate dalla sezione authorization del web.config.
È possibile impostare l'autorizzazione con il livello di granularità richiesto dalla nostra applicazione, utilizzando l'elemento location del web.config, prendendo ad esempio il seguente frammento:

<location path="OnlyForAdmin.txt" >
  <system.web>
    <authorization>
      <allow verbs="PUT" roles="Admin"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>
<location path="OnlyForCommunityManager.txt" >
  <system.web>
    <authorization>
      <allow verbs="GET" roles="CommunityManager"/>
      <deny users="*" />
    </authorization>
  </system.web>
</location>

L'accesso ai due file di testo è stato limitato, mappando correttamente le estensioni in IIS questi saranno serviti solo ai ruoli specificati.

Al fine di impedire letture o scritture accidentali attraverso le classi di IO, come System.IO.File, è possibile utilizzare il metodo statico CheckUrlAccessForPrincipal della classe UrlAuthorizationModule.

if (UrlAuthorizationModule.CheckUrlAccessForPrincipal("/MyWebSite/OnlyForAdmin.txt", User, "PUT"))
{
  InfoLabel.Text = "Posso accedere al file OnlyForAdmin.Txt";
  //operazioni sul file...
}

Il metodo accetta tre parametri, che sono il percorso relativo del file, un oggetto che implementi l'interfaccia IPrincipal, come ad esempio l'oggetto restituito dalla proprietà User della classe Page, ed infine una stringa che rappresenta l'accesso in sola lettura (GET, POST, HEAD) o scrittura (tutti gli altri).

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi