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.