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
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Load test di ASP.NET Core con k6
Short-circuiting della Pipeline in ASP.NET Core
Implementare il throttling in ASP.NET Core
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Migrare una service connection a workload identity federation in Azure DevOps