Sinceramente mi ero chiesto perchè non esistesse in ASP.NET un qualcosa per effettuare l’encode di una stringa nel markup senza ricorrere ogni volta all’apposito metodo della classe HttpUtility; ovviamente questo non è un grandissimo problema, ma allunga i tempi di scrittura del codice e, IMHO, aggiunge verbosità allo stesso.
Per comodità mi sono realizzato un extension method per le stringhe che si occupa di effettuare l’encode/decode sia per l’html che per l’url, facilitando un po’ la scrittura del codice, come mostrato di seguito:
<!-- metodo classico --> <%= Server.HtmlEncode(myVar) %> <!-- con extension method --> <%= myVar.EncodeHtml() %>
In ASP.NET 4.0 esisterà qualcosa di ancor più comodo ed immediato - lo annuncia Phil Haac qui - ossia una nuova “sintassi” per i blocchi di codice nelle pagine aspx (ovviemente vale anche per i controlli, view, ecc) che effettuerà per noi l’encode in HTML: infatti oltre al binding ed al response ci sarà Html Encoding, come mostrato di seguito:
<%: myVar %>
Sarebbe bello poter specificare un provider per cambiare il sistema di encoding, e magari anche sostituire l’HtmlEncode della classe HttpUtility con quello della Anti-XSS.