El problema de la seguridad en internet, siempre ha sido un tema prioritario para los desarrolladores, por eso, los grandes esfuerzos de las compañías en sacar frameworks cada vez más potentes y seguros. Hoy nos orientamos a mostrar uno de esos esfuerzos que vendrá incorporado en la nueva versión de ASP.NET 4.5

Todavía es una preview, pero la próxima versión de asp.net, ya está despertando un gran interés en el mundo del desarrollo web. No solo se da más impulso a la parte estándar del html5, sino que además incorpora modificaciones que hacen aún más potente esta gran herramienta de desarrollo web.

Hoy queremos hacernos eco de una novedad, que a nuestro modo de ver es un gran avance,  y que tendrá una gran repercusión tanto en la seguridad, como en los tiempos de respuesta de nuestras aplicaciones. Nos  referimos la posibilidad de tipar fuertemente los controles enlazados a datos. Y para ello veremos un ejemplo con el control que más flexibilidad nos proporciona, pero a la vez que más complejidad requiere: El repeater.

El repreater es un control, que nos permite repetir una especie de plantilla con cada elemento enlazado dentro del datasouce. Esta característica, que es de gran utilidad, hacía uso de un enlazado de datos dinámico, lo que daba una gran flexibilidad a este control, pero a la misma vez podía aumentar el riesgo de crear vulnerabilidades por XSS (Cross-Site Scripting).

Si ya es verdad que se dieron pasos para solucionar este problema en asp.net 4.0, ahora con el tipado fuerte de datos se ha conseguido un gran avance (ya que no nos gusta decir en material de seguridad que algo es definitivo)

En estas líneas podemos observar cómo se hace el linkado de datos al campo text a través de las instrucciones <%#Eval(‘xxx’)%>. Este código es potencialmente peligroso, ya que es vulnerable a XSS.

<asp:Repeater  ID=”rptEjemplo1” runat=”server” >

<ItemTemplate>

<asp:Label runat=”server” ID=”lblComentario” Text=’<%# Eval(“Comments”) %>’/>

<asp:Label runat=”server” ID=”lblNombre” Text=’<%# Eval(“Name”) %>’/>

<asp:Label runat=”server” ID=”lblEmail” Text=’<%# Eval(“Email”) %>’/>

</ItemTemplate>

</asp:Repeater>

 

Ahora tendremos esto mismo, pero lo haremos estableciendo una nueva propiedad (ModelType) y cambiando las etiquetas peligrosas por estas otras

<%#Item.Clientes.Email%>

En el que al estar tipado el control no admitirá valores que no estén contemplados en la clase que se establece como tipo del control.

Así el ejemplo anterior nos quedará de esta forma:

<asp:Repeater  ID=”rptEjemplo1” runat=”server” ModelType=”Clientes”  >

<ItemTemplate>

<asp:Label runat=”server” ID=”lblComentario” Text=’<%#Item.Clientes.Comments %>’/>

<asp:Label runat=”server” ID=”lblNombre” Text=’ <%#Item.Clientes.Name %>’/>

<asp:Label runat=”server” ID=”lblEmail” Text=’ <%#Item.Clientes.Email %>’/>

</ItemTemplate>

</asp:Repeater>

La gran flexibilidad que nos da el repeater, se ve a veces contrarrestado por la seguridad, por ello es de necesidad, que los desarrolladores conozcamos tanto los puntos fuertes como los débiles de los controles que usamos. En este punto los esfuerzos de la compañía de Redmond han sido constantes, tanto en la versión 4, donde se realizaron grandes esfuerzos como en la versión 4.5 con el tipado fuerte de datos en controles. Desde aquí animar a que se vayan probando y conociendo las nuevas características que nos traerá el nuevo asp.net 4.5

un saludo a todos

Anuncios