Vous êtes sur la page 1sur 11

ASP .

NET 2 Acceso a Datos

Informacin general sobre el acceso a datos en ASP.NET


Las aplicaciones Web obtienen acceso normalmente a los orgenes de datos para el
almacenamiento y la recuperacin de datos dinmicos. Se puede escribir cdigo para el acceso a
los datos utilizando clases del espacio de nombres System.Data (normalmente denominado
ADO.NET) y del espacio de nombres System.Xml. Este enfoque era normal en versiones anteriores
de ASP.NET.
Sin embargo, ASP.NET tambin permite realizar el enlace de datos mediante declaracin. Este
proceso no requiere la existencia de cdigo para los escenarios de datos ms comunes, entre los
que se incluyen:

Seleccionar y mostrar datos.

Ordenar, paginar y almacenar datos en memoria cach.

Actualizar, insertar y eliminar datos.

Filtrar datos utilizando parmetros en tiempo de ejecucin.

Crear escenarios de detalles maestros utilizando parmetros.

ASP.NET incluye dos tipos de controles de servidor que participan en el modelo de enlace de datos
declarativo: controles de origen de datos y controles enlazados a datos. Estos controles
administran las tareas subyacentes requeridas por el modelo Web sin estado para mostrar y
actualizar datos en pginas Web ASP.NET. Por tanto, no es estrictamente necesario conocer los
detalles del ciclo de vida de la solicitud de pgina si slo se va a realizar el enlace de datos.

Controles de origen de datos


Los controles de origen de datos son controles ASP.NET que administran las tareas de conexin a
un origen de datos y de lectura y escritura de datos. Los controles de origen de datos no
representan ninguna interfaz de usuario, sino que actan como intermediarios entre un almacn
de datos en particular (como una base de datos, un objeto comercial o un archivo XML) y los
dems controles de la pgina Web ASP.NET. Los controles de origen de datos habilitan un amplio
conjunto de funciones para recuperar y modificar datos, entre las que se incluyen la consulta, la
ordenacin, la paginacin, el filtrado, la actualizacin, la eliminacin y la insercin. ASP.NET
incluye los controles de origen de datos siguientes:

Control de origen de
datos

Descripcin

ObjectDataSource

Permite trabajar con un objeto comercial u otra clase y crear aplicaciones Web basadas en objetos de nivel
medio para administrar los datos.
Para obtener ms informacin, vea ObjectDataSource (Control de servidor Web).

SqlDataSource

Permite trabajar con proveedores de datos administrados de ADO.NET, que proporcionan acceso a bases de
datos de Microsoft SQL Server, OLE DB, ODBC u Oracle.
Para obtener ms informacin, vea SqlDataSource (Control de servidor Web).

AccessDataSource

Permite trabajar con una base de datos de Microsoft Access.


Para obtener ms informacin, vea AccessDataSource (Control de servidor Web).

XmlDataSource

Permite trabajar con un archivo XML, que es especialmente til para controles de servidor ASP.NET jerrquicos
tales como el control TreeView o Menu.

MCT: Luis Dueas

Pag 1 de 11

ASP .NET 2 Acceso a Datos


Para obtener ms informacin, vea XmlDataSource (Control de servidor Web).
SiteMapDataSource

Se utiliza con la exploracin del sitio ASP.NET. Para obtener ms informacin, vea Informacin general sobre
la exploracin del sitio de ASP.NET.

Los controles de origen de datos tambin se pueden ampliar para admitir proveedores de
almacenamiento y acceso a datos adicionales.
Para obtener ms informacin sobre controles de origen de datos, vea Informacin general sobre
los controles de origen de datos.

Controles enlazados a datos


Los controles enlazados a datos representan datos como marcado al explorador que realiz la
solicitud. Un control enlazado a datos se puede enlazar a un control de origen de datos y buscar
datos automticamente en el momento apropiado del ciclo de vida de la solicitud de pgina. Los
controles enlazados a datos pueden aprovechar las ventajas de las funciones proporcionadas por
un control de origen de datos entre las que se incluyen la ordenacin, la paginacin, el
almacenamiento en cach, el filtrado, la actualizacin, la eliminacin y la insercin. Un control
enlazado a datos establece una conexin con un control de origen de datos a travs de su
propiedad DataSourceID.
ASP.NET incluye los controles enlazados a datos que se describen en la tabla siguiente.
Controles de lista
Representa los datos en una variedad de formato de listas. Entre los controles de lista se
incluyen los controles BulletedList, CheckBoxList, DropDownList, ListBox y
RadioButtonList.
AdRotator
Representa los anuncios de una pgina como una imagen en la que los usuarios pueden
hacer clic para ir a una direccin URL asociada al anuncio.
Para obtener ms informacin, vea AdRotator (Control de servidor Web).
DataList
Representa los datos en una tabla. Cada elemento se representa utilizando una plantilla
de elemento definida por el usuario.
Para obtener ms informacin, vea DataList (Control de servidor Web).
DetailsView
Muestra un registro cada vez en disposicin de tabla y permite editar, eliminar e insertar
registros. Tambin se puede realizar la paginacin a travs de varios registros.
Para obtener ms informacin, vea DetailsView (Control de servidor Web).
FormView
Es similar al control DetailsView, pero permite definir una disposicin de formato libre
para cada registro. El control FormView es como un control DataList para un registro
nico.
Para obtener ms informacin, vea FormView (Control de servidor Web).

MCT: Luis Dueas

Pag 2 de 11

ASP .NET 2 Acceso a Datos


GridView
Muestra los datos en una tabla e incluye compatibilidad para editar, actualizar, ordenar y
paginar datos sin necesidad de cdigo.

Nota

El control GridView reemplaza el control DataGrid ASP.NET disponible en versiones anteriores de ASP.NET.
Para obtener ms informacin, vea GridView (Control de servidor Web).
Menu
Representa los datos en un men dinmico jerrquico que puede incluir submens.
Para obtener ms informacin, vea Menu (Control de servidor Web).
Repeater
Representa los datos en una lista. Cada elemento se representa utilizando una plantilla de
elemento definida por el usuario.
Para obtener ms informacin, vea Repeater (Control de servidor Web).
TreeView
Representa los datos en un rbol jerrquico de nodos que se pueden expandir.
Para obtener ms informacin, vea TreeView (Control de servidor Web).

Nota

El control DataGrid disponible en versiones anteriores de ASP.NET se ha sustituido por el control GridView, que incluye
funciones mejoradas para ordenar, paginar y modificar datos. Las pginas existentes que utilicen el control DataGrid
continuarn funcionando. Al igual que otros controles de datos, el control DataGrid se ha mejorado para interactuar con
controles de origen de datos.

MCT: Luis Dueas

Pag 3 de 11

ASP .NET 2 Acceso a Datos

Establecer enlaces a bases de datos


Las aplicaciones Web muestran normalmente datos procedentes de una base de datos relacional
como Microsoft SQL Server, Microsoft Access, Oracle, o de un almacn de datos de OLE DB u
ODBC. Para simplificar la tarea de enlazar un control a los datos de una base de datos, ASP.NET
proporciona el control SqlDataSource.

Control SqlDataSource
El control SqlDataSource representa una conexin directa a una base de datos en una aplicacin
Web. Los controles enlazados a datos como los controles GridView, DetailsView y FormView
pueden utilizar el control SqlDataSource para recuperar y modificar datos automticamente. Se
especifican comandos para seleccionar, insertar, actualizar y eliminar datos como parte del control
SqlDataSource, y el control realiza estas operaciones automticamente. No es necesario escribir
cdigo (por ejemplo, cdigo de ADO.NET que utiliza clases del espacio de nombres System.Data)
para crear una conexin ni especificar comandos para consultar y actualizar una base de datos.
En el ejemplo de cdigo siguiente se muestra un control GridView enlazado a un control
SqlDataSource para recuperar, actualizar y eliminar datos.

<%@ Page language="VB" %> <html> <body> <form runat="server"> <h3>GridView Edit
Example</h3> <!-- The GridView control automatically sets the columns --> <!-specified in the datakeynames property as read-only. --> <!-- No input controls
are rendered for these columns in --> <!-- edit mode. --> <asp:gridview
id="CustomersGridView" datasourceid="CustomersSqlDataSource"
autogeneratecolumns="true" autogeneratedeletebutton="true"
autogenerateeditbutton="true" datakeynames="CustomerID" runat="server">
</asp:gridview> <!-- This example uses Microsoft SQL Server and connects --> <!-to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve
the connection string value --> <!-- from the Web.config file. -->
<asp:sqldatasource id="CustomersSqlDataSource" selectcommand="Select [CustomerID],
[CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
updatecommand="Update Customers SET CompanyName=@CompanyName, Address=@Address,
City=@City, PostalCode=@PostalCode, Country=@Country WHERE (CustomerID =
@CustomerID)" deletecommand="Delete from Customers where CustomerID = @CustomerID"
connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
runat="server"> </asp:sqldatasource> </form> </body> </html>
El control SqlDataSource conecta directamente a una base de datos y, por consiguiente,
implementa un modelo de datos de dos niveles. Si se necesita enlazar un objeto comercial de nivel
medio que realiza recuperaciones y actualizaciones de datos, se puede utilizar el control
ObjectDataSource. Para obtener informacin detallada, vea Establecer enlaces con objetos
comerciales.
Para obtener ms informacin sobre el control SqlDataSource, vea Informacin general sobre el
control de servidor Web SqlDataSource.

MCT: Luis Dueas

Pag 4 de 11

ASP .NET 2 Acceso a Datos

Sintaxis de expresiones de enlace de datos


La sintaxis de enlace de datos permite enlazar los valores de las propiedades de los controles a los
datos y especificar valores para recuperar, actualizar, eliminar e insertar datos.

Sintaxis de enlace de datos


Las expresiones de enlace de datos estn contenidas dentro de los delimitadores <%# y %>, y
utilizan las funciones Eval y Bind. La funcin Eval se utiliza para definir un enlace de tipo
unidireccional (de slo lectura). La funcin Bind se utiliza para el enlace de tipo bidireccional
(actualizable). Adems de llamar a los mtodos Eval y Bind para realizar el enlace de datos en
una expresin de enlace de datos, puede llamar a cualquier cdigo de mbito pblico incluido en
los delimitadores <%# y %> para ejecutar dicho cdigo y devolver un valor durante el
procesamiento de la pgina.
Las expresiones de enlace de datos se resuelven cuando se llama al mtodo DataBind de un
control o de la clase Page. Para los controles como GridView, DetailsView y FormView, las
expresiones de enlace de datos se resuelven automticamente durante el evento PreRender del
control y no es necesario llamar al mtodo DataBind de forma explcita.
En el ejemplo de cdigo siguiente se muestra el uso de las expresiones de enlace de datos con un
control FormView en una propiedad ItemTemplate.

<asp:FormView ID="FormView1" DataSourceID="SqlDataSource1"


DataKeyNames="ProductID" RunAt="server"> <ItemTemplate> <table> <tr><td
align=right><B>Product ID:</B></td> <td><%# Eval("ProductID") %></td></tr> <tr><td
align=right><B>Product Name:</B></td> <td><%# Eval("ProductName") %></td></tr>
<tr><td align=right><B>Category ID:</B></td> <td><%# Eval("CategoryID")
%></td></tr> <tr><td align=right><B>Quantity Per Unit:</B></td><td><%#
Eval("QuantityPerUnit") %></td></tr> <tr><td align=right><B>Unit Price:</B></td>
<td><%# Eval("UnitPrice") %></td></tr> </table> </ItemTemplate> </asp:FormView>
Utilizar el mtodo Eval
El mtodo Eval evala las expresiones de datos enlazados tardamente en las plantillas de
controles enlazados a datos, como GridView, DetailsView y FormView. En tiempo de ejecucin,
el mtodo Eval llama al mtodo Eval del objeto DataBinder, haciendo referencia al elemento de
datos actual del contenedor de nombres. El contenedor de nombres suele ser la parte ms
pequea del control enlazado a datos que contiene un registro completo, como una fila de un
control GridView. Por consiguiente, el mtodo Eval slo se puede utilizar para el enlace dentro de
las plantillas de un control enlazado a datos.
El mtodo Eval toma el nombre de un campo de datos y devuelve una cadena que contiene el
valor de dicho campo desde el registro actual en el origen de datos. Puede proporcionar un
segundo parmetro opcional a fin de especificar un formato para la cadena devuelta. El parmetro
de formato de cadena utiliza la sintaxis definida para el mtodo Format de la clase String.
Utilizar el mtodo Bind
El mtodo Bind tiene algunas similitudes con el mtodo Eval, pero hay diferencias significativas.
Aunque los valores de los campos enlazados a datos se pueden recuperar con el mtodo Bind o
con el mtodo Eval, el mtodo Bind tambin se utiliza cuando se pueden modificar los datos.

MCT: Luis Dueas

Pag 5 de 11

ASP .NET 2 Acceso a Datos


En ASP.NET, los controles enlazados a datos como GridView, DetailsView y FormView pueden
utilizar automticamente las operaciones de actualizacin, supresin e insercin de un control de
origen de datos. Por ejemplo, si ha definido instrucciones SQL Select, Insert, Delete y Update para
el control de origen de datos, el uso de Bind en un control GridView o DetailsView, o en una
plantilla de control FormView permite al control extraer los valores de los controles secundarios
de la plantilla y pasarlos al control de origen de datos. El control de origen de datos a su vez
ejecuta el comando correspondiente para la base de datos. Por esta razn, la funcin Bind se
utiliza dentro de las propiedades EditItemTemplate o InsertItemTemplate de un control
enlazado a datos.
El mtodo Bind suele emplearse con controles de entrada como TextBox representado por una fila
GridView en modo de edicin. Cuando el control enlazado a datos crea estos controles de entrada
como parte de su propia representacin, puede extraer los valores de entrada.
El mtodo Bind toma el nombre de un campo de datos para asociarle a la propiedad enlazada,
como se muestra en el ejemplo siguiente:

<EditItemTemplate> <table> <tr> <td align=right> <b>Employee ID:</b> </td> <td>


<%# Eval("EmployeeID") %> </td> </tr> <tr> <td align=right> <b>First Name:</b>
</td> <td> <asp:TextBox ID="EditFirstNameTextBox" RunAt="Server" Text='<%#
Bind("FirstName") %>' /> </td> </tr> <tr> <td align=right> <b>Last Name:</b> </td>
<td> <asp:TextBox ID="EditLastNameTextBox" RunAt="Server" Text='<%#
Bind("LastName") %>' /> </td> </tr> <tr> <td colspan="2"> <asp:LinkButton
ID="UpdateButton" RunAt="server" Text="Update" CommandName="Update" /> &nbsp;
<asp:LinkButton ID="CancelUpdateButton" RunAt="server" Text="Cancel"
CommandName="Cancel" /> </td> </tr> </table> </EditItemTemplate>
Cuando se hace clic en el botn Update de la fila, los valores de cada propiedad de control
enlazada mediante Bind se extraen y se pasan al control de origen de datos para la operacin de
actualizacin.

Llamar al mtodo DataBind de forma explcita


Los controles como GridView, FormView y DetailsView realizan el enlace llamando al mtodo
DataBind de forma implcita cuando se enlazan a un control de origen de datos mediante la
propiedad DataSourceID. Sin embargo, hay situaciones en las que es necesario llamar al mtodo
DataBind de forma explcita.
Una situacin posible consiste en enlazar un control a un control a un control de origen de datos
con la propiedad DataSource en lugar de la propiedad DataSourceID. En ese caso, necesitara
llamar explcitamente al mtodo DataBind para realizar el enlace de datos y resolver las
expresiones de enlace de datos.
Otra situacin consiste en que se necesite actualizar manualmente los datos de un control
enlazado a datos. Imagine una pgina en la que hay dos controles que muestran informacin
proveniente de la misma base de datos (tal vez con vistas diferentes). En ese caso, tendra que
volver a enlazar explcitamente el control a los datos para mantener sincronizada la visualizacin
de la informacin. Por ejemplo, podra existir un control GridView que muestra una lista de
productos y un control DetailsView que permite a los usuarios editar un producto determinado.
Aunque los controles GridView y DetailsView muestran datos del mismo origen, estn enlazados
a controles de origen de datos distintos dado que utilizan consultas diferentes para obtener sus

MCT: Luis Dueas

Pag 6 de 11

ASP .NET 2 Acceso a Datos


datos. Un usuario podra actualizar un registro mediante el control DetailsView y hacer que el
control de origen de datos asociado lleve a cabo la actualizacin. Sin embargo, dado que el control
GridView est enlazado a un control de origen de datos diferente, mostrar los valores antiguos
de los registros hasta que se actualice la pgina. Por consiguiente, una vez que se actualizan los
datos mediante el control DetailsView, puede llamar al mtodo DataBind. Esto hace que el
control GridView actualice tambin su vista el volver a ejecutar las expresiones de enlace de
datos y el cdigo de mbito pblico incluidos en los delimitadores <%# y %>. En consecuencia, el
control GridView reflejar la actualizacin efectuada por el control DetailsView.

Proteger el acceso a datos


La mayora de las aplicaciones Web ASP.NET implican el acceso a datos. Muchas aplicaciones
recogen datos para almacenarlos en una base de datos o en un archivo y, a menudo, se basan en
informacin procedente de los usuarios. Puesto que los datos originales pueden proceder de
orgenes que no son de confianza (ya que la informacin se almacena en un formato permanente)
y hay que asegurarse de que los usuarios no autorizados no puedan obtener acceso al origen de
datos directamente, es necesario prestar especial atencin a los problemas de seguridad
relacionados con el acceso a datos. La informacin de este tema describe los procedimientos
recomendados para mejorar la seguridad del acceso a datos en las aplicaciones Web ASP.NET.
Aunque se puede mejorar la seguridad de la aplicacin siguiendo las buenas prcticas en materia
de codificacin y configuracin, tambin es importante mantener actualizado el servidor Web con
las ltimas actualizaciones de seguridad de Microsoft Windows y Servicios de Internet Information
Server (IIS), as como las actualizaciones de seguridad de Microsoft SQL Server o cualquier otro
software de base de datos.
Puede encontrar informacin ms detallada sobre los procedimientos recomendados para escribir
cdigo seguro y para proteger las aplicaciones en el libro "Writing Secure Code" de Michael
Howard y David LeBlanc, o a travs de las directrices incluidas en Microsoft Patterns and Practices.

Proteger el acceso a un origen de datos


Las secciones siguientes proporcionan informacin sobre cmo ayudar a proteger diferentes
aspectos del acceso a datos.
Cadenas de conexin
Para conectar con una base de datos, se necesita una cadena de conexin. Puesto que las cadenas
de conexin pueden contener datos confidenciales, se deben seguir estas instrucciones:

No almacene cadenas de conexin en ninguna pgina. Por ejemplo, evite la


configuracin de las cadenas de conexin como propiedades declarativas del control
SqlDataSource o de otros controles de origen de datos. En su lugar, almacnelas en el
archivo Web.config del sitio. Para obtener un ejemplo, vea Cmo: Proteger cadenas de
conexin al utilizar controles de orgenes de datos.

No almacene cadenas de conexin como texto sin formato. Para proteger la conexin al
servidor de base de datos, se recomienda cifrar la informacin de la cadena de conexin del
archivo de configuracin mediante la configuracin protegida. Para obtener ms
informacin, vea Cifrar informacin de configuracin mediante una configuracin protegida.

MCT: Luis Dueas

Pag 7 de 11

ASP .NET 2 Acceso a Datos


Conectar con SQL Server mediante seguridad integrada
Si es posible, conctese a una instancia de SQL Server utilizando la seguridad integrada en lugar
de un nombre de usuario explcito y una contrasea. De esta forma, se evita la posibilidad de
comprometer la integridad de la cadena de conexin y de exponer el identificador de usuario y la
contrasea.
Se recomienda que se asegure de que la identidad del proceso (por ejemplo, la agrupacin de
aplicaciones) que est ejecutando ASP.NET sea la cuenta de proceso predeterminada o una cuenta
de usuario restringida. Para obtener ms informacin, vea Suplantacin de ASP.NET.
En los casos en los que distintos sitios Web conectan con diversas bases de datos de SQL Server,
puede que no resulte prctico utilizar la seguridad integrada. Por ejemplo, en los sitios de
alojamiento Web, se suele asignar a cada cliente una base de datos de SQL Server diferente, pero
todos utilizan el servidor Web como usuarios annimos. En estos casos, debe utilizar credenciales
explcitas para conectarse a una instancia de SQL Server. Asegrese de almacenar las credenciales
de forma segura, como se describe en este tema en Cadenas de conexin.
Permisos de base de datos de SQL Server
Se recomienda asignar los privilegios mnimos al identificador de usuario que se utiliza para la
conexin a las bases de datos de SQL Server usadas en la aplicacin.
Restringir las operaciones de SQL
Los controles enlazados a datos pueden admitir una gran variedad de operaciones con datos como
seleccin, insercin, eliminacin y actualizacin de registros en las tablas de datos. Se recomienda
configurar los controles de datos para realizar la funcionalidad mnima necesaria de la pgina o
aplicacin. Por ejemplo, si un control no debe permitir a los usuarios que eliminen datos, no
incluya una consulta Delete con un control de origen de datos y no permita eliminacin en el
control.
SQL Server Express
Para asociar un proceso a una base de datos de SQL Server Express (archivo .mdf), debe tener
permisos de administrador. En general, esta es la razn por la que las bases de datos de SQL
Server Express no son prcticas para la creacin de sitios Web, ya que el proceso de ASP.NET no
se ejecuta (ni se debe ejecutar) con privilegios administrativos. Por consiguiente, utilice las bases
de datos de SQL Server Express slo en los siguientes casos:

Como base de datos de prueba al desarrollar la aplicacin Web. Cuando est listo para
implementar la aplicacin, puede transferir la base de datos de SQL Server Express a una
instancia de produccin de SQL Server.

Utilcelas si est ejecutando un sitio Web que permite la suplantacin y puede controlar
los privilegios del usuario suplantado. En la prctica, esta estrategia es conveniente si la
aplicacin se est ejecutando en una red de rea local (no en un sitio Web pblico).

Almacene el archivo .mdf en la carpeta App_Data del sitio porque el contenido de la


carpeta no se devolver para enviar solicitudes HTTP. Tambin debe asignar la extensin
.mdf a ASP.NET en IIS y al controlador HttpForbiddenHandler en ASP.NET mediante el
siguiente elemento en el archivo Web.config del sitio:

<httpHandlers> <add verb="*" path="*.mdf"


type="System.Web.HttpForbiddenHandler" /> </httpHandlers>

MCT: Luis Dueas

Pag 8 de 11

ASP .NET 2 Acceso a Datos


Para obtener informacin sobre cmo asignar una extensin de nombre de archivo a
ASP.NET en IIS, vea Cmo: Registrar controladores HTTP.
Bases de datos de Microsoft Access
Las bases de datos de Microsoft Access (archivos .mdb) incluyen menos caractersticas de
seguridad que las de SQL Server. No se recomienda utilizar bases de datos de Access para la
creacin de sitios Web. Sin embargo, si por alguna razn tiene que utilizar un archivo .mdb como
parte de la aplicacin Web, siga estas instrucciones:

Almacene el archivo .mdb en la carpeta App_Data del sitio porque el contenido de la


carpeta no se devolver ante solicitudes HTTP directas. Tambin debe asignar la extensin
.mdb a ASP.NET en IIS y al controlador HttpForbiddenHandler en ASP.NET mediante el
siguiente elemento en el archivo Web.config del sitio:

<httpHandlers> <add verb="*" path="*.mdb"


type="System.Web.HttpForbiddenHandler" /> </httpHandlers>
Para obtener informacin sobre cmo asignar una extensin de nombre de archivo a
ASP.NET en IIS, vea Cmo: Registrar controladores HTTP.

Agregue los permisos adecuados a las cuentas de los usuarios que leern el archivo
.mdb y escribirn en l. Si el sitio Web admite el acceso annimo, sta suele ser la cuenta
de usuario ASPNET local o la cuenta NETWORK SERVICE. Dado que Access debe crear un
archivo .ldb para admitir el bloqueo, la cuenta de usuario debe tener permisos de escritura
para la carpeta que contiene el archivo .mdb.

Si la base de datos est protegida con contrasea, no utilice el control


AccessDataSource para establecer una conexin con ella, ya que AccessDataSource no
admite el paso de credenciales. En su lugar, utilice el control SqlDataSource con el
proveedor ODBC y pase las credenciales en la cadena de conexin. Asegrese de proteger
la cadena de conexin como se describe en este tema en Cadenas de conexin.

Archivos XML
Si est almacenando datos en un archivo XML, coloque el archivo en la carpeta App_Data del sitio
Web porque el contenido de la carpeta no se devolver como respuesta a solicitudes HTTP
directas.

Protegerse de los datos de entrada malintencionados


Si la aplicacin acepta la entrada de datos de los usuarios, debe asegurarse de que su contenido
no es malintencionado y no compromete la integridad de la aplicacin. Los usuarios
malintencionados pueden introducir datos para iniciar los siguientes ataques:

Inyeccin de secuencia de comandos

Un ataque de inyeccin consiste en enviar

una secuencia de comandos a la aplicacin para que otros usuarios la ejecuten. En los
ataques de inyeccin tpicos, las secuencias de comandos se envan a una pgina que las
almacena en una base de datos, de modo que otro usuario que vea los datos ejecute el
cdigo sin darse cuenta.

Inyeccin SQL

Los ataques de inyeccin SQL intentan comprometer la seguridad de

la base de datos, y posiblemente la del equipo en el que se est ejecutando, creando


comandos de SQL que se ejecutan sustituyendo o sumndose a los integrados en la
aplicacin.

MCT: Luis Dueas

Pag 9 de 11

ASP .NET 2 Acceso a Datos


Instrucciones generales
Para todos los datos proporcionados por los usuarios, siga estas instrucciones:

Utilice controles de validacin siempre que sea posible para admitir slo valores
aceptables.

Asegrese de que el valor de la propiedad IsValid es true antes de ejecutar su cdigo


del servidor. Un valor de false significa que uno o ms controles de validacin han
producido un error en una comprobacin de validacin.

Realice siempre validaciones en el servidor aunque el explorador tambin las est


realizando para protegerse contra los usuarios que omiten la validacin en el cliente,
especialmente para los controles CustomValidator; no utilice slo la lgica de validacin del
cliente.

Vuelva a validar siempre los datos proporcionados por los usuarios en la capa de
negocio de la aplicacin. No confe en el proceso de llamada para proporcionar datos
seguros. Por ejemplo, si utiliza el control ObjectDataSource, agregue validacin y
codificacin redundantes al objeto que realiza las actualizaciones de los datos.

Inyeccin de secuencia de comandos


Para evitar los ataques de inyeccin de secuencia de comandos, siga estas instrucciones:

Codifique la entrada del usuario con el mtodo HtmlEncode, que convierte el cdigo
HTML en su representacin de texto (por ejemplo, <b> se vuelve &ltb&gt;) y ayuda a
evitar que el marcado se ejecute en un explorador.

Al utilizar objetos de parmetro para pasar los datos proporcionados por el usuario a
una consulta, agregue controladores para los eventos previos a la consulta del control del
origen de datos y lleve a cabo la codificacin en esos eventos. Por ejemplo, controle el
evento SqlDataSource del control Inserting y, en el evento, codifique el valor del
parmetro antes de que se ejecute la consulta.

Si va a utilizar el control GridView con campos enlazados, establezca la propiedad


BoundField del objeto HtmlEncode en true. De esta forma, el control GridView codifica los
datos proporcionados por los usuarios cuando la fila est en modo de edicin.

Para los controles que se pueden colocar en el modo de edicin, se recomienda utilizar
plantillas. Por ejemplo, los controles GridView, DetailsView, FormView, DataList y Login
pueden mostrar cuadros de texto modificable. Sin embargo, salvo el control GridView (vea
el punto anterior), los controles no validan automticamente ni codifican en HTML los datos
proporcionados por los usuarios. Por consiguiente, se recomienda crear plantillas para estos
controles e incluir en ellas un control de entrada como TextBox y agregar un control de
validacin. Adems, al extraer el valor del control, debe codificarlo.

Inyeccin SQL
Para evitar los ataques de inyeccin SQL, siga estas instrucciones:

No cree comandos de SQL concatenando las cadenas, sobre todo las que incluyen datos
introducidos por los usuarios. Utilice consultas con parmetros o procedimientos
almacenados.

Si crea una consulta parametrizada, utilice objetos de parmetro para establecer los
valores de los parmetros. Para obtener informacin detallada, vea Utilizar parmetros con
el control SqlDataSource y Utilizar parmetros con controles de origen de datos.

MCT: Luis Dueas

Pag 10 de 11

ASP .NET 2 Acceso a Datos


Cifrar datos de estado de vista
A veces, los controles enlazados a datos, como el control GridView, deben conservar informacin
que se considera confidencial. Por ejemplo, este control puede mantener una lista de claves en la
propiedad DataKeys, aunque no se muestre esta informacin. Entre las acciones de ida y vuelta, el
control almacena la informacin en el estado de vista.
La informacin del estado de vista se codifica y almacena con el contenido de la pgina y se podra
descodificar y exponer a un origen no deseado. Si debe almacenar informacin confidencial en el
estado de vista, puede solicitar que la pgina cifre los datos del estado de vista. Para cifrar los
datos, establezca la propiedad ViewStateEncryptionMode de la pgina en true. Para obtener ms
informacin, vea Proteger el estado de vista.
Almacenamiento en cach
Se recomienda no almacenar informacin confidencial en el objeto Cache cuando la suplantacin
del cliente est habilitada y los resultados del origen de datos se recuperen en funcin de la
identidad del cliente. Si el almacenamiento en cach est habilitado, todos los usuarios pueden ver
los datos almacenados en cach para un nico usuario y es posible que se exponga informacin
importante a una fuente no deseada. La suplantacin del cliente est habilitada cuando el atributo
impersonate del elemento de configuracin identidad est establecido en true y la identificacin
annima est deshabilitada para la aplicacin en el servidor Web.

MCT: Luis Dueas

Pag 11 de 11

Vous aimerez peut-être aussi