Etiquetas

Hace ya unos años escribí en mi antiguo post este tema, hoy lo he querido traer aqui que es donde debe estar.

Ademas actualizaré alguna cosilla que ha salido en la versión 4.5 definitiva.

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

Hoy queremos hacernos eco de una característica, 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 (ItemType) 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” ItemType=”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