Anti-XSS Library è uno degli strumenti più evoluti per evitare attacchi di tipo XSS (Cross Site Scripting) ai nostri siti Web, è parte di Web Protection Library ed è disponibile su CodePlex all'indirizzo
http://wpl.codeplex.com/
Essa fornisce tutta una serie di funzionalità per effettuare l'encoding di stringhe, che si basano sull'utilizzo di whitelist, ossia identificando i soli caratteri ritenuti sicuri, a differenza dell'encoder standard di ASP.NET che invece agisce sui caratteri ritenuti vietati (blacklisting).
Per effettuare l'encode di una stringa con Anti-XSS Library è sufficiente utilizzare uno dei metodi statici della classe AntiXss, a seconda della tipologia di output che vogliamo produrre. Ad esempio, nel caso di testo HTML possiamo scrivere
myLabel.Text = AntiXss.HtmlEncode("<b>Text</b> with invalid chars <script>");
Come abbiamo detto, ASP.NET espone già il metodo HttpUtility.HtmlEncode per svolgere un compito simile e, se il nostro scopo è adeguare un'applicazione preesistente ad Anti-XSS Library, presumibilmente avremo già centinaia di righe di codice di questo tipo, sparse per le varie classi del nostro progetto WebForms o di tag inline
<%: this.Model.SomeProperty %>
nelle view di ASP.NET MVC, che necessitano di essere modificate nella forma vista in precedenza.
Fortunatamente con ASP.NET 4.0 abbiamo la possibilità di realizzare un provider di encoding personalizzato e di iniettarlo nel runtime in maniera trasparente, semplicemente agendo sul file Web.Config. Il primo passo consiste nel realizzare una classe che derivi da HttpEncoder.
public class AntiXssEncoder : HttpEncoder { protected override void HtmlEncode(string value, TextWriter output) { output.Write(AntiXss.HtmlEncode(value)); } protected override void HtmlAttributeEncode(string value, TextWriter output) { output.Write(AntiXss.HtmlAttributeEncode(value)); } }
Successivamente, dobbiamo referenziare questa classe nel file di configurazione, all'interno del nodo System.Web.
<system.web> <httpRuntime encoderType="WebApplication1.AntiXssEncoder, WebApplication1"/> </system.web>
In questo modo, grazie alla nuova architettura di ASP.NET 4.0, tutte le chiamate ad HttpUtility.HtmlEncode verranno eseguite tramite il nostro nuovo provider, sfruttando quindi Anti-XSS Library. Quest'ultima verrà utilizzata anche nel caso di codice inline nelle pagine aspx o nelle view di ASP.NET MVC
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Il nuovo controllo Range di Blazor 9
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Escludere alcuni file da GitHub Secret Scanning
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
I più letti di oggi
- #IE10 disponibile al download da subito: http://aspitalia.com/vf http://aspitalia.com/mix-11 #mix11
- #ie10 supporta il multitouch anche in #Javascript. http://aspitalia.com/build-win8 #BldWin
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Fissare una versione dell'agent nelle pipeline di Azure DevOps