seguridad asp.net

Upload: cheke-sanchez

Post on 13-Oct-2015

53 views

Category:

Documents


0 download

TRANSCRIPT

Una pgina Web mal escrita puede comprometer la integridad y la seguridad de todo el servidor y, potencialmente, de toda la red.Por lo tanto, debe revisar las consideraciones de seguridad que hay que tener en cuenta al disear la aplicacin Web.ASP.NET Security ArchitectureProporciona informacin general sobre las relaciones entre los subsistemas y la infraestructura ASP.NET, con respecto a la seguridad.ASP.NET Web Application SecurityExplica cmo solucionar problemas de autorizacin y autenticacin en ASP.NET.Security Considerations for JScriptDescribe algunos problemas relacionados con la seguridad que pueden encontrar los programadores de JScript.How to: Use Transport SecurityDescribe cmo usar la seguridad de transporte para la autenticacin cuando se establece conexin con un servicio WCF.Arquitectura de seguridad de ASP.NETEn esta seccin se proporciona informacin general sobre la infraestructura de seguridad de ASP.NET.En la siguiente ilustracin se muestran las relaciones entre los sistemas de seguridad de ASP.NET.Arquitectura ASP.NET

Como se muestra en la ilustracin, todos los clientes Web se comunican con las aplicaciones ASP.NET a travs de Microsoft Internet Information Services (IIS).IIS autentica la solicitud si fuera necesario y, a continuacin, busca el recurso solicitado (como una aplicacin ASP.NET).Si el cliente est autorizado, el recurso estar disponible.Cuando se est ejecutando una aplicacin ASP.NET, puede utilizar las caractersticas de seguridad de ASP.NET integradas.Adems, una aplicacin ASP.NET puede utilizar las caractersticas de seguridad de .NET Framework.Para obtener ms informacin, veaConceptos clave de seguridad.Integrar autenticacin de ASP.NET con IISAdems de basarse en las funciones de autenticacin de IIS, puede realizar la autenticacin en ASP.NET.Al considerar la autenticacin de ASP.NET, deber comprender la interaccin con los servicios de autenticacin de IIS.Internet Information Services (IIS) supone que se asigna un conjunto de credenciales a una cuenta de Microsoft Windows NT y que se utilizan las credenciales para autenticar a los usuarios.Los mtodos de autenticacin que se usan en IIS7 son: annima, suplantacin de ASP.NET, bsica, asignacin de certificados de clientes, implcita, mediante formularios y Seguridad integrada de Windows (NTLM o Kerberos).Se puede seleccionar el tipo de autenticacin mediante los servicios de administracin de IIS.Para obtener ms informacin, veaConfigurar la autenticacin en IIS 7.Si los usuarios solicitan una direccin URL que asigna una aplicacin ASP.NET, la informacin sobre la autenticacin y la solicitud se entrega a la aplicacin.ASP.NET proporciona la autenticacin de formularios.La autenticacin de formularios es un sistema que redirige las solicitudes no autenticadas a una pgina web ASP.NET que usted crea.El usuario proporciona las credenciales y enva la pgina.Si la aplicacin autentica la solicitud, el sistema emite un vale de autenticacin en una cookie que contiene las credenciales o una clave para readquirir la identidad.Las solicitudes subsiguientes incluyen un vale de autenticacin con la solicitud.

En esta seccin se proporciona informacin general sobre la infraestructura de seguridad de ASP.NET.En la siguiente ilustracin se muestran las relaciones entre los sistemas de seguridad de ASP.NET.Arquitectura ASP.NET

Como se muestra en la ilustracin, todos los clientes Web se comunican con las aplicaciones ASP.NET a travs de Microsoft Internet Information Services (IIS).IIS autentica la solicitud si fuera necesario y, a continuacin, busca el recurso solicitado (como una aplicacin ASP.NET).Si el cliente est autorizado, el recurso estar disponible.Cuando se est ejecutando una aplicacin ASP.NET, puede utilizar las caractersticas de seguridad de ASP.NET integradas.Adems, una aplicacin ASP.NET puede utilizar las caractersticas de seguridad de .NET Framework.Para obtener ms informacin, veaConceptos clave de seguridad.Integrar autenticacin de ASP.NET con IISAdems de basarse en las funciones de autenticacin de IIS, puede realizar la autenticacin en ASP.NET.Al considerar la autenticacin de ASP.NET, deber comprender la interaccin con los servicios de autenticacin de IIS.Internet Information Services (IIS) supone que se asigna un conjunto de credenciales a una cuenta de Microsoft Windows NT y que se utilizan las credenciales para autenticar a los usuarios.Los mtodos de autenticacin que se usan en IIS7 son: annima, suplantacin de ASP.NET, bsica, asignacin de certificados de clientes, implcita, mediante formularios y Seguridad integrada de Windows (NTLM o Kerberos).Se puede seleccionar el tipo de autenticacin mediante los servicios de administracin de IIS.Para obtener ms informacin, veaConfigurar la autenticacin en IIS 7.Si los usuarios solicitan una direccin URL que asigna una aplicacin ASP.NET, la informacin sobre la autenticacin y la solicitud se entrega a la aplicacin.ASP.NET proporciona la autenticacin de formularios.La autenticacin de formularios es un sistema que redirige las solicitudes no autenticadas a una pgina web ASP.NET que usted crea.El usuario proporciona las credenciales y enva la pgina.Si la aplicacin autentica la solicitud, el sistema emite un vale de autenticacin en una cookie que contiene las credenciales o una clave para readquirir la identidad.Las solicitudes subsiguientes incluyen un vale de autenticacin con la solicitud.Configuracin de seguridad del archivo de configuracin de ASP.NETLa configuracin de seguridad de ASP.NET se configura en los archivos Machine.config y Web.config.Como con la dems informacin de configuracin, la configuracin base y la predeterminada se establecen en el archivo Machine.config en el subdirectorio Config de la instalacin .NET Framework actual.Puede establecer una configuracin especfica del sitio y otra especfica de la aplicacin (incluidos los valores de reemplazo del archivo Machine.config) en los archivos Web.config en los directorios raz del sitio Web y de la aplicacin.Los subdirectorios heredan las configuraciones del directorio, a no ser que se reemplacen por un archivo Web.config del subdirectorio.Para ver un ejemplo del funcionamiento de la seguridad en un sistema de configuracin jerrquica, veaElemento configSections (Esquema de configuracin general).Hay tres subsecciones principales en un archivo Web.config: las seccionesautenticacin,autorizacineidentidad.Los valores para cada elemento de seguridad normalmente se establecen en el archivo Machine.config y se reemplazan segn sea necesario en el archivo Web.config en la aplicacin.Todos los subdirectorios heredan automticamente estos valores.No obstante, los subdirectorios pueden tener sus propios archivos de configuracin que reemplazan valores heredados.

Nota

La configuracin de ASP.NET slo se aplica a recursos ASP.NET, en concreto a aqullos que se registraron para que los controlara la extensin Aspnet_isapi.dll en IIS.La configuracin de ASP.NET no puede proporcionar autorizacin para recursos que no haya procesado ASP.NET.Por lo tanto, .txt, .htm, .html, .gif, .jpg, .jpeg, .asp y otros tipos de archivo son accesibles para todos los usuarios (sujetos a los permisos de IIS).Por ejemplo, aunque los recursos de un directorio de ASP.NET estn incluidos en un archivo Web.config con acceso restringido, los usuarios pueden ver los archivos de ese directorio, siempre que el explorador de directorios est activado y no haya otro tipo de restricciones.Estos tipos de archivos pueden estar bajo la seguridad de ASP.NET si se asigna explcitamente dichas extensiones de nombre de archivo a la extensin Aspnet_isapi.dll mediante la herramienta de administracin de IIS.Sin embargo, el procesamiento de estos tipos de archivos a travs de ASP.NET puede afectar al rendimiento del sitio Web.Para obtener ms informacin sobre cmo proteger los archivos de una carpeta, veaCmo: Configurar directorios concretos mediante la configuracin de la ubicacin.

Se puede utilizar el elemento de configuracinubicacinpara especificar el archivo o directorio a los que se deben aplicar las opciones predeterminadas.Para obtener ms informacin, veaElemento configSections (Esquema de configuracin general)yConfigurar archivos y subdirectorios especficos.Para obtener ms informacin general sobre la configuracin de ASP.NET, veaInformacin general sobre la configuracin de ASP.NET.El ejemplo siguiente muestra la sintaxis de las secciones de seguridad de un archivo de configuracin:

defaultUrl="string" cookieless="[UseCookies|UseUri|AutoDetect|UseDeviceProfile]" domain="string"

Los valores predeterminados de estos elementos se incluyen en la tabla siguiente.Valor predeterminadoDescripcin

Una cadena vaca que indica que se permiten todas las funciones de forma predeterminada.

Una cadena vaca que indica que todos los usuarios tienen acceso (no se requiere ninguna autenticacin).

Una cadena vaca que indica que no se asignan verbos de forma predeterminada.

El tipo de autenticacin que determina el origen del valorUseractual.El valor predeterminado es Windows.

El algoritmo hash que se utiliza en las contraseas.El valor predeterminado esSHA1.

Una cadena vaca que indica que no se deniega ninguna funcin de forma predeterminada.

Una cadena vaca que indica que no se deniega ningn usuario de forma predeterminada.

Una cadena vaca que indica que no se asignan verbos de forma predeterminada.

Mtodo que se usa para almacenar el vale de autenticacin de formularios en el cliente.Los valores vlidos sonUseCookies,UseUri,AutoDetect,UseDeviceProfile(predeterminado).

Cadena que indica la direccin URL de la pgina a la que se redirecciona despus del inicio de sesin.

Cadena vaca que indica que no se ha especificado ningn dominio para la cookie.

Direccin URL a la que se dirige la solicitud si establece la autenticacinmodecomoFormsy si la solicitud no tiene un vale de autenticacin vlido.

El nombre bajo el que la cookie de autenticacin de formularios se almacena en el equipo del usuario.

La ruta de acceso a la que se aplica la autenticacin de formularios.El valor predeterminado es todas las rutas de acceso desde la raz de la aplicacin hacia abajo.

La seguridad que se ha aplicado al vale de autenticacin de formularios.Los valores incluyenAll,None,EncryptionyValidation.

El tiempo de espera en minutos antes de que el vale de autenticacin de formularios expire y los usuarios tengan que volver a autenticarse.

Un valor booleano que indica si se requiere una conexin SSL para transmitir la cookie de autenticacin.

Un valor booleano que indica si est habilitado el plazo de expiracin.Para obtener ms informacin, vea la propiedadSlidingExpiration.

Un valor booleano que indica si la suplantacin est deshabilitada.Para obtener ms informacin, veaSuplantacin de ASP.NET.

Una cadena vaca que indica que no se especifica ninguna identidad de usuario de forma predeterminada.

Una cadena vaca que indica que no se especifica ninguna contrasea para la identidad de usuario de forma predeterminada.

La directiva de seguridad que se aplicar a la aplicacin.

El archivo de directivas predeterminado para el nivel de confianza Full.

El archivo de directivas predeterminado para el nivel de confianza High.

El archivo de directivas predeterminado para el nivel de confianza Medium.

El archivo de directivas predeterminado para el nivel de confianza Low.

El archivo de directivas predeterminado para el nivel de confianza Minimal.

Funcionamiento de la seguridad en ASP.NETLa seguridad de los sitios Web es una cuestin de importancia fundamental, adems de compleja, para los desarrolladores de sitios Web.La proteccin de un sitio requiere la elaboracin cuidadosa de un plan; por consiguiente, los programadores y administradores de sitios Web deben comprender perfectamente las opciones para proteger los sitios.ASP.NET funciona junto con Microsoft .NET Framework e Internet Information Services (IIS) para ayudar a proporcionar aplicaciones Web seguras.Para ayudar a proteger la seguridad de una aplicacin ASP.NET, se deben llevar a cabo las dos funciones principales que se describen en la siguiente tabla.Funcin de seguridadDescripcin

AutenticacinAyuda a comprobar que el usuario es precisamente quien dice ser.La aplicacin obtiene las credenciales (diversas formas de identificacin, como nombre y contrasea) de un usuario, y las valida consultando a una autoridad determinada.Si las credenciales son vlidas, se considera a la entidad que ha enviado las credenciales como una entidad autenticada.

AutorizacinLimita los derechos de acceso mediante la concesin o negacin de permisos especficos a una identidad autenticada.

Adems, Internet Information Services (IIS) puede conceder o negar el acceso en funcin de la direccin IP o del nombre de host del usuario.Cualquier autorizacin de acceso posterior se realiza mediante la autorizacin de la direccin URL del permiso de acceso al sistema de archivos NTFS.Es importante entender cmo interactan todos los diversos subsistemas de seguridad.Puesto que ASP.NET se basa en Microsoft .NET Framework, el desarrollador de aplicaciones ASP.NET tambin tiene acceso a todas las caractersticas de seguridad integradas de .NET Framework, como la seguridad de acceso a cdigo y la seguridad de acceso basada en funciones.Para obtener informacin detallada sobre las funciones de seguridad de ASP.NET, veaSeguridad de acceso del cdigo de ASP.NET.Informacin general sobre las amenazas para la seguridad de las aplicaciones webSi a su aplicacin Web tienen acceso usuarios desconocidos, existen muchas probabilidades de que algn usuario malintencionado intente tambin obtener acceso.Normalmente, los servidores de Internet accesibles al pblico se sondean constantemente para descartar vulnerabilidades.Por consiguiente, se recomienda que tome precauciones y adopte medidas de seguridad en todas sus aplicaciones Web.Puede encontrar informacin ms detallada sobre los procedimientos recomendados para escribir cdigo seguro y garantizar la seguridad de las aplicaciones en el libro "Writing Secure Code", de Michael Howard y David LeBlanc, o a travs de la especificacinMicrosoft Patterns and Practices.La tecnologa de seguridad es slo parte de la solucinImplementar tecnologa de seguridad es slo parte de la solucin.Otra parte consiste en la vigilancia.Aunque el sistema cuente con numerosos elementos de seguridad, es preciso vigilarlo de cerca de los modos siguientes: Supervisando los registros de eventos del sistema.Observe si se producen intentos repetidos de iniciar sesin en su sistema o si el servidor web recibe un nmero excesivo de solicitudes. Mantenga continuamente actualizado el servidor de la aplicacin con las ltimas revisiones de seguridad de Microsoft Windows y de Internet Information Services (IIS), as como cualquier revisin de Microsoft SQLServer o de otros orgenes de datos que pueda utilizar su aplicacin.Modelo de amenazasUna fase importante en el proceso de programacin de aplicaciones ms seguras consiste en ser capaz de anticipar las amenazas que se puede sufrir.Microsoft ha elaborado un sistema de clasificacin de las amenazas en distintas categoras: suplantacin, manipulacin, repudio, revelacin de informacin, denegacin de servicio y concesin de privilegio.En las secciones siguientes se describen brevemente estas amenazas y cmo afectan a las aplicaciones Web.SuplantacinSuplantar (spoof) es utilizar los datos de identificacin de otro usuario o proceso de forma no autorizada.En su versin ms simple, la suplantacin consistira en introducir las credenciales de un usuario diferente.Un usuario malintencionado podra tambin cambiar el contenido de una cookie para fingir que es otra persona o que la cookie proviene de un servidor diferente.En general, es posible contribuir a evitar la suplantacin mediante una autenticacin estricta.Siempre que alguien solicita acceso a informacin privada, es preciso asegurarse de que es quien dice ser.Tambin se puede contribuir a la defensa contra la suplantacin manteniendo la informacin de credenciales a salvo.Por ejemplo, no se debe guardar nunca una contrasea ni otro tipo de datos confidenciales o privados en una cookie, donde un usuario malintencionado podra encontrarlos y modificarlos fcilmente.ManipulacinManipularsignifica cambiar o eliminar un recurso sin autorizacin.El ejemplo tpico consiste en desfigurar una pgina Web, para lo cul, el usuario malintencionado logra acceso al sitio y cambia algunos archivos.Un modo indirecto de manipulacin son losataques mediante scripts.Un usuario malintencionado consigue que se ejecute cdigo (script) enmascarndolo como la entrada de datos de un usuario en una pgina o como un vnculo.Una defensa fundamental contra la manipulacin consiste en usar la seguridad de Windows para bloquear los archivos, directorios y otros recursos de Windows.La aplicacin tambin debera ejecutarse con privilegios mnimos.Para reforzar la proteccin contra los ataques al sistema que aprovechan el script, desconfe ante cualquier informacin que proceda de un usuario o, incluso, de una base de datos.Siempre que se obtenga informacin de una fuente que no sea de confianza, es preciso asegurarse de que no contiene cdigo ejecutable.RepudioUna amenaza derepudioimplica llevar a cabo una transaccin de manera que no haya pruebas fehacientes de los actores de las entidades de seguridad de la transaccin.En una aplicacin Web, esto puede significar que se est suplantando a un usuario inocente usando sus credenciales.Contribuir a la proteccin contra el repudio es posible, de nuevo, aplicando una autenticacin estricta.Adems, se deben usar las funciones de inicio de sesin de Windows para mantener un registro de auditora de cualquier actividad en el servidor.Revelacin de informacinRevelacin de informacinsignifica simplemente robar o desvelar informacin que se supone que es confidencial.Un ejemplo tpico es el robo de contraseas, pero la revelacin de informacin tambin incluye el acceso a cualquier archivo o recurso del servidor.La mejor proteccin contra la revelacin de informacin es no tener informacin que revelar.Por ejemplo, si se evita el almacenamiento de contraseas, ningn usuario malintencionado podr robarlas.Una alternativa al almacenamiento de las contraseas consiste en guardar slo un valor hash de stas.De este modo, cuando un usuario presenta sus credenciales, se puede extraer el valor hash de su contrasea y compararlo con el almacenado.Si, aun as, se almacena informacin confidencial, se debe utilizar la seguridad de Windows para ayudar a protegerla.Como en todos los casos anteriores, se debera utilizar la autenticacin para contribuir a garantizar que slo los usuarios autorizados pueden tener acceso a la informacin restringida.Si tiene que exponer informacin confidencial, es recomendable que la cifre cuando la almacene y que utilice SSL (Secure Sockets Layer) para cifrar la informacin cuando se enva al explorador o se recibe de ste.Denegacin de servicioUn ataque dedenegacin de servicioconsiste en hacer deliberadamente que una aplicacin est menos disponible de lo que debera.Un ejemplo tpico es sobrecargar una aplicacin Web de forma que no pueda servir a los usuarios normales.Como alternativa, los usuarios malintencionados pueden intentar simplemente bloquear el servidor.Los servicios IIS permitenlimitarlas aplicaciones de forma que slo sirvan un nmero determinado de solicitudes,lo que podra resultar til para denegar el acceso a los usuarios o direcciones IP que se sabe que tienen malas intenciones.Para mantener sus aplicaciones en lnea, es esencial ejecutar cdigo slido.Debe probar exhaustivamente su aplicacin y responder apropiadamente a los errores siempre que sea posible.Concesin de privilegioUn ataque deelevacin de privilegiosconsiste en usar medios malintencionados para obtener ms permisos de los asignados normalmente.Por ejemplo, en un ataque de elevacin de privilegios que se realice correctamente, un usuario malintencionado consigue obtener privilegios administrativos para el servidor Web, lo que le proporciona acceso a todos los datos del servidor, as como el control de las funciones de ste.Como ayuda para protegerse contra ataques de elevacin de privilegios, se debe ejecutar la aplicacin en un contexto con los permisos mnimos, si resulta factible.Por ejemplo, se recomienda no ejecutar las aplicaciones de ASP.NET con la cuenta de usuario SYSTEM (administrador).Procedimientos de seguridad bsicos para aplicaciones webEl tema de la creacin de una aplicacin Web segura es muy amplioya que requiere realizar un estudio para comprender los puntos vulnerables de la seguridad.Tambin necesita familiarizarse con las funciones de seguridad de Windows, .NET Framework y ASP.NET.Por ltimo, es esencial entender cmo usar estas caractersticas de seguridad para enfrentarse a las amenazas.Aunque no se tenga mucha experiencia en seguridad, existen unas medidas bsicas que se deberan adoptar para proteger cualquier aplicacin Web.La lista siguiente proporciona pautas de seguridad mnima que se aplican a todas las aplicaciones Web y que se deberan seguir: Recomendaciones generales de seguridad para aplicaciones Web Ejecutar aplicaciones con privilegios mnimos Conocer a los usuarios Protegerse contra entradas malintencionadas Tener acceso seguro a bases de datos Crear mensajes de error seguros Mantener segura la informacin confidencial Usar cookies de forma segura Protegerse contra amenazas de denegacin de servicioRecomendaciones generales de seguridad para aplicaciones WebNo obstante, incluso los mtodos de seguridad de aplicaciones ms elaborados pueden verse comprometidos si un usuario malintencionado logra obtener acceso a los equipos usando medios simples.Siga estas instrucciones: Realice copias de seguridad con asiduidad y gurdelas en lugar seguro. Mantenga el equipo del servidor en un lugar fsico seguro, de forma que los usuarios no autorizados no puedan tener acceso a l, apagarlo o llevrselo. Utilice el sistema de archivos NTFS de Windows, no el FAT32.NTFS ofrece mucha ms seguridad que el FAT32.Para obtener informacin detallada, vea la documentacin de Windows. Proteja el equipo del servidor web y todos los dems equipos de la misma red con contraseas rigurosas. Proteja los servicios IIS.Para obtener una informacin ms detallada, visite el sitio Web deMicrosoft TechNet Security Center. Cierre los puertos que no se utilicen y desactive los servicios no usados. Ejecute un programa antivirus que supervise el trfico entrante y saliente. Establezca y haga respetar una poltica que prohba a los usuarios tener sus contraseas escritas en una ubicacin fcil de localizar. Use un firewall.Para conocer las recomendaciones, vea el artculo en inglsMicrosoft Firewall Guidelinesen el sitio Web sobre seguridad de Microsoft. Instale las ltimas revisiones de seguridad de Microsoft y otros proveedores.Por ejemplo, para obtener una lista con los ltimos boletines de seguridad para todos los productos Microsoft, consulteMicrosoft TechNet Security Center.Otros fabricantes tienen sitios parecidos. Use las funciones de registro de eventos de Windows y examine los registros con frecuencia para detectar actividades sospechosas.Esto incluye los intentos repetidos de iniciar una sesin en el sistema o la existencia de un nmero extremadamente alto de solicitudes en el servidor web.Ejecutar aplicaciones con privilegios mnimosCuando la aplicacin se ejecuta, lo hace en un contexto que tiene privilegios especficos en el equipo local y posiblemente en equipos remotos.Para obtener informacin sobre cmo configurar identidad de aplicaciones, veaConfigurar la identidad de procesos en ASP.NET.Para ejecutar con privilegios mnimos, siga estas instrucciones: No ejecute la aplicacin con la identidad de un usuario de sistema (administrador). Ejecute la aplicacin en el contexto de un usuario con los mnimos privilegios factibles. Establezca permisos (Listas de control de acceso, o ACL) en todos los recursos requeridos por la aplicaciny utilice la configuracin menos permisiva posible.Por ejemplo, si resulta viable en la aplicacin, establezca que los archivos sean de slo lectura.Para obtener una lista de los permisos ACL mnimos requeridos para la identidad de su aplicacin ASP.NET, veaListas de control de acceso (ACL) necesarias para ASP.NET. Mantenga los archivos de la aplicacin Web en una carpeta ubicada debajo de la raz de la aplicacin.No d a los usuarios la opcin de especificar una ruta que permita tener acceso a ningn archivo de la aplicacin.Esto ayudar a evitar que los usuarios obtengan acceso a la raz del servidor.Conocer a los usuariosEn muchas aplicaciones, los usuarios tienen acceso al sitio de forma annima (sin tener que proporcionar las credenciales).Si es el caso, la aplicacin obtiene acceso a recursos al ejecutarse en el contexto de un usuario predefinido.De forma predeterminada, este contexto es el usuario ASPNET local (en Windows 2000 o Windows XP) o el usuario NETWORK SERVICE (en Windows Server 2003) del equipo del servidor web.Para restringir el acceso nicamente a los usuarios que se hayan autenticado, siga estas instrucciones: Si la aplicacin pertenece a una intranet, configrela para usar la seguridad integrada de Windows.De este modo, las credenciales de inicio de sesin de los usuarios se pueden usar para obtener acceso a los recursos.Para obtener ms informacin, veaSuplantacin de ASP.NET. Si precisa recabar credenciales del usuario, utilice una de las estrategias de autenticacin de ASP.NET.Para obtener un ejemplo, veaAdministrar usuarios mediante pertenencia.Protegerse contra entradas malintencionadasComo regla general, nunca se debe dar por sentado que la entrada proveniente de los usuarios es segura.A los usuarios malintencionados les resulta fcil enviar informacin potencialmente peligrosa desde el cliente a la aplicacin.Para protegerse contra las entradas malintencionadas, siga estas instrucciones: En las pginas Web ASP.NET, filtre la entrada de los usuarios para comprobar si existen etiquetas HTML, que pueden contener un script.Para obtener informacin detallada, veaCmo: Proteger una aplicacin web frente a ataques mediante scripts aplicando codificacin HTML a las cadenas. Nunca repita (muestre) entrada de los usuarios sin filtrar.Antes de mostrar informacin que no sea de confianza, codifique los elementos HTML para convertir cualquier script potencialmente peligroso en cadenas visibles, pero no ejecutables. No almacene nunca informacin proporcionada por el usuario sin filtrar en una base de datos. Si desea aceptar algn elemento de cdigo HTML de un usuario, fltrelo manualmente.En el filtro, defina explcitamente lo que aceptar.No cree un filtro que intente eliminar cualquier entrada malintencionada, ya que es muy difcil anticipar todas las posibilidades. No d por sentado que la informacin obtenida del encabezado de solicitud HTTP (en el objetoHttpRequest) es segura.Proteja las cadenas de consulta, cookies, etc.Tenga en cuenta que la informacin que el explorador enva al servidor (informacin del agente de usuario) puede ser suplantada, en caso de que resulte importante para la aplicacin en cuestin. Si es posible, no almacene informacin confidencial en un lugar accesible desde el explorador, como campos ocultos o cookies.Por ejemplo, no almacene una contrasea en una cookie.Nota

El estado de vista se almacena en un campo oculto en un formato codificado.que, de forma predeterminada, incluye un cdigo de autenticacin de mensajes (MAC) para que la pgina pueda determinar si se ha manipulado el estado de vista.Si la informacin confidencial se almacena en estado de vista, cifre estableciendo la propiedadViewStateEncryptionModede la pgina entrue.

Tener acceso seguro a bases de datosNormalmente, las bases de datos tienen sus propios sistemas de seguridad.Un aspecto importante de una aplicacin Web protegida es disear un modo de que sta pueda tener acceso a la base de datos de forma segura.Siga estas instrucciones: Use el sistema de seguridad inherente de la base de datos para limitar quin puede tener acceso a los recursos de dicha base.La estrategia exacta depender de la base de datos y de la aplicacin: Si resulta viable en la aplicacin, use la seguridad integrada de forma que slo los usuarios autenticados mediante Windows puedan tener acceso a la base de datos.La seguridad integrada es ms segura que pasar las credenciales explcitas a la base de datos. Si la aplicacin utiliza el acceso annimo, cree un nico usuario con permisos muy limitados, y haga que las consultas se ejecuten conectndose como dicho usuario. No cree instrucciones SQL concatenando cadenas que contengan informacin aportada por los usuarios.En su lugar, cree una consulta parametrizada y use la entrada del usuario para establecer los valores de los parmetros. Si debe almacenar un nombre de usuario y su contrasea en algn lugar para utilizarlos como las credenciales de inicio de sesin de la base de datos, almacnelos en el archivo Web.config y asegure el archivo con configuracin protegida.Para obtener informacin detallada, veaCifrar la informacin de configuracin mediante una configuracin protegida.Para obtener ms informacin sobre cmo tener acceso a los datos de forma segura, veaProteger el acceso a datosyProteger aplicaciones de ADO.NET.Crear mensajes de error segurosSi no se es cuidadoso, un usuario malintencionado puede deducir informacin importante sobre la aplicacin a partir de los mensajes de error que sta muestra.Siga estas instrucciones: No escriba mensajes de error que presenten informacin que pudiera resultar til a los usuarios malintencionados, como un nombre de usuario. Configure la aplicacin para que no muestre errores detallados a los usuarios.Si desea mostrar mensajes de error detallados para la depuracin, determine primero si quien los recibir es un usuario local con respecto al servidor web.Para obtener informacin detallada, veaCmo: Mostrar mensajes de error seguros. Utilice el elemento de configuracincustomErrorspara controlar quin ve las excepciones desde el servidor. Cree un sistema de administracin de errores personalizado para las situaciones que sean propensas a los errores, como el acceso a las bases de datos.Para obtener ms informacin, veaControl de errores en aplicaciones y pginas ASP.NET.Mantener segura la informacin confidencialInformacin confidencial es toda aquella informacin que se desea conservar privada.Un ejemplo de informacin confidencial es una contrasea o una clave cifrada.Si un usuario malintencionado consigue llegar a la informacin confidencial, los datos protegidos se vern expuestos.Siga estas instrucciones: Si la aplicacin transmite informacin confidencial entre el explorador y el servidor, plantese utilizar el protocolo SSL (Secure Sockets Layer).Para obtener detalles sobre cmo asegurar un sitio con SSL, vea el artculo Q307267 en ingls, "HOW TO: Secure XML Web Services with Secure Socket Layer in Windows 2000" en Microsoft Knowledge Base en el sitio http://support.microsoft.com. Utilice configuracin protegida para proteger la informacin confidencial en archivos de configuracin como los archivos Web.config o Machine.config.Para obtener ms informacin, veaCifrar la informacin de configuracin mediante una configuracin protegida. Si debe almacenar informacin confidencial, no lo haga en una pgina Web, ni siquiera en un formato que piense que la gente no podr verlo (por ejemplo, cdigo del servidor). Utilice los algoritmos de cifrado de alta seguridad proporcionados en el espacio de nombresSystem.Security.Cryptography.Usar cookies de forma seguraLas cookies constituyen un modo til de almacenar la informacin especfica disponible sobre los usuarios.Sin embargo, como se envan al explorador del equipo, son vulnerables a la suplantacin u otros usos malintencionados.Siga estas instrucciones: No almacene informacin vital en cookies.Por ejemplo, no almacene, ni siquiera temporalmente, la contrasea de un usuario en una cookie.Como norma, no guarde nada en una cookie que, si se produce una suplantacin, pueda comprometer el funcionamiento de su aplicacin.En lugar de eso, guarde en la cookie una referencia a la ubicacin del servidor en la que se encuentra la informacin. Establezca el perodo de tiempo mnimo posible para la fecha de expiracin de las cookies.Si es posible, evite las cookies permanentes. Plantese cifrar la informacin que contienen las cookies. Considere establecer las propiedadesSecureyHttpOnlyde las cookies comotrue.Protegerse contra amenazas de denegacin de servicioUn modo indirecto en el que un usuario malintencionado puede comprometer una aplicacin es haciendo que sta no est disponible.El usuario malintencionado puede mantener la aplicacin demasiado ocupada como para que pueda servir a otros usuarios, o si puede simplemente bloquearla.Siga estas instrucciones: Use un control de errores (por ejemplo, try-catch).Incluya un bloque final en el que se liberen los recursos si se produce un error. Configure los servicios IIS para utilizar la regulacin de procesos, que evita que una aplicacin use una cantidad desproporcionada del tiempo de la CPU. Compruebe los lmites de tamao de la entrada del usuario antes de usarla o almacenarla. Incluya lmites de tamao para las consultas a las bases de datos.Por ejemplo, antes de mostrar los resultados de las consultas en una pgina Web ASP.NET, asegrese de que no hay un nmero excesivo de registros. Establezca un lmite de tamao para las cargas de archivos, si stas forman parte de la aplicacin.Puede establecer un lmite en el archivo Web.config usando sintaxis como la siguiente, donde el valormaxRequestLengthest en kilobytes: Asimismo puede utilizar la propiedadRequestLengthDiskThresholdpara reducir la sobrecarga de memoria de grandes cargas y devoluciones de formularios.Acceso a SQL Server desde una aplicacin webCuando una aplicacin Web implica el acceso a bases de datos, debe proporcionar credenciales a SQL Server (es decir, debe iniciar una sesin en SQL Server), exactamente igual que cualquier otro usuario o proceso.En una aplicacin Web, esto puede introducir complicaciones.Por ejemplo, si la aplicacin Web se ejecuta de forma annima, puede que no haya credenciales que pasar a SQL Server.Existen diferentes formas de disear el acceso a SQL Server para las aplicaciones Web.La estrategia elegida depender de cmo estn configurados los equipos y de si stos pertenecen a una intranet.Las opciones ms sencillas son las siguientes: Usar la seguridad integrada de Windows.Esta opcin pasa las credenciales del usuario a SQL Server.Debido a los problemas de delegacin, es frecuente que esto slo funcione de forma predeterminada si SQL Server est en el mismo equipo que IIS. Asignar la identidad de la aplicacin ASP.NET a un usuario de dominio Windows y, a continuacin, iniciar una sesin en la base de datos como dicho usuario.Esta opcin funciona bien para el acceso annimo si SQL Server y el servidor Web se encuentran en equipos distintos. Obtenga acceso al servidor SQL Server como identidad local de una aplicacin ASP.NET (por ejemplo, la cuenta ASPNET local en un servidor Windows 2000 o la cuenta NETWORK SERVICE local en un servidor Windows Server 2003).Esta opcin resulta adecuada para el acceso annimo. Pasar un nombre de usuario y contrasea explcitos en una cadena de conexin.Esta opcin puede resultar menos segura que otras opciones, por lo que debera utilizar siempre la configuracin protegida para las cadenas de conexin.Puede pasar un nombre de usuario y una contrasea predeterminados.En esta seccinTrminoDefinicin

Cmo: Obtener acceso a SQL Server mediante la seguridad integrada de WindowsProporciona un ejemplo de cmo utilizar la seguridad integrada de Windows para el acceso a bases de datos.

Cmo: Obtener acceso a SQL Server mediante un usuario de dominio Windows asignadoProporciona un ejemplo de cmo utilizar un usuario del dominio de Windows asignado para el acceso a bases de datos.

Cmo: Obtener acceso a SQL Server como usuario localProporciona un ejemplo de cmo utilizar una cuenta de usuario local para el acceso a bases de datos.

Cmo: Obtener acceso a SQL Server mediante las credenciales predeterminadasProporciona un ejemplo de cmo utilizar la informacin de inicio de sesin predeterminada para el acceso a bases de datos.

Seguridad de aplicaciones Web en tiempo de ejecucinEl desarrollo de una aplicacin exige trabajar con un conjunto de cuestiones de seguridad.El otro conjunto de cuestiones (que suelen ser las ms destacadas en cualquier comentario acerca de la seguridad Web) se refieren a la seguridad de la aplicacin una vez implementada y en ejecucin.Las aplicaciones Web, por definicin, permiten el acceso de usuarios a recursos centrales, el servidor web y, a travs de ste, a otros como los servidores de bases de datos.Comprender e implementar las medidas de seguridad adecuadas permite: Proteger los recursos propios contra accesos no autorizados. Restringir los niveles de acceso por usuario o por funcin. Establecer integridad de datos y confidencialidad, proporcionando un entorno relativamente seguro en el que los usuarios se encuentren cmodos al trabajar con su aplicacin. Establecer control sobre cmo la aplicacin obtiene acceso a recursos restringidos. Garantizar que el cdigo de la aplicacin se ejecuta de la forma esperada.Este tema proporciona un comentario general sobre cmo llevar a cabo estos objetivos, e incluye vnculos con temas adicionales en los que se pueden obtener ms detalles acerca de las tecnologas implicadas.Puede ayudar a proteger su aplicacin de acceso no autorizado aprovechando estos tipos de caractersticas de seguridad: Caractersticas de seguridad que ofrece Internet Information Services (IIS) como parte de su funcionalidad general de servidor web.Esto es, seguridad de nivel de usuario, equipo y archivo de Windows. La seguridad que se puede incorporar a la aplicacin ASP.NET para proporcionar acceso especfico para la aplicacin.Proceso de seguridad en ASP.NETIIS proporciona muchas opciones de seguridad para los sitios Web.Sin embrago, los mecanismos de seguridad de IIS son muy genricos, ya que se utilizan los mismos mecanismos para todas las aplicaciones.Adems, es posible que las opciones de seguridad de IIS, por ejemplo, la seguridad integrada de Windows, no siempre sean adecuadas para su aplicacin.(Por otro lado, para las aplicaciones de intranet, tal vez prefiera utilizar la seguridad integrada de Windows que es ms sencilla.)Por lo tanto, para proporcionar acceso a partes especficas de su aplicacin, puede utilizar seguridad de ASP.NET.La seguridad de ASP.NET funciona junto con la seguridad IIS pero la ampla para que pueda personalizar caractersticas, como por ejemplo, la obtencin de credenciales de usuario.IIS recibe en primer lugar solicitudes de los clientes, y efecta las comprobaciones de seguridad establecidas para la aplicacin mediante las herramientas de administracin de IIS.Por ejemplo, si la aplicacin se ha configurado en IIS de forma que permita el acceso annimo, IIS no efecta comprobacin de credenciales.Una vez efectuada la comprobacin inicial de autenticacin, IIS enva una solicitud a ASP.NET, que puede llevar a cabo un segundo nivel de comprobacin.ASP.NET permite especificar restricciones de acceso a la aplicacin mediante diversos criterios: se puede restringir el acceso a pginas especficas, a usuarios especficos, etc.AutenticacinEn la siguiente tabla, se describen los mtodos de autenticacin compatibles con ASP.NET.Algunos de ellos solapan la autenticacin de IIS.Para obtener informacin detallada, veaAutenticacin de ASP.NET.Tipo de autenticacinDescripcin

Acceso annimoPara aplicaciones en las que usuarios annimos efecten solicitudes (generalmente, aplicaciones Web pblicas).Se superpone con IIS.

Autenticacin bsica y de texto implcita(Opcin de seguridad de IIS) En este escenario, a los usuarios sin credenciales se les solicita que proporcionen un nombre de usuario y una contrasea.

Seguridad integrada de Windows (tambin denominada Seguridad NTLM)(Opcin de seguridad de IIS) Si el usuario que hace la solicitud ya ha sido autenticado en una red basada en Windows, IIS puede pasar las credenciales del usuario cuando solicite acceso a un recurso.

Autenticacin de certificados(Opcin de seguridad de IIS) En este escenario, el cliente tiene un certificado (una identificacin digital) que ha obtenido de un recurso de terceros.La identidad asignada al certificado del cliente pasa a ASP.NET.

Kerberos(Opcin de seguridad de IIS) El protocolo de autenticacin Kerberos define las interacciones entre un cliente y un Servicio de autenticacin de red denominado Centro de distribucin de claves (KDC).Windows 2000 y 2003 implementan un KDC como servicio de autenticacin en cada controlador de dominio.

Autenticacin de Windows(Opcin de seguridad de ASP.NET) Se integra con las opciones de seguridad de IIS mostradas previamente .ASP.NET adopta el smbolo de seguridad creado por IIS y hace que est disponible como un objetoWindowsPrincipalestablecido como el valor de la propiedadUserdelHttpContextactual.

Autenticacin mediante formularios(Opcin de seguridad de ASP.NET) Si un usuario necesita autenticarse, ASP.NET redirige la solicitud a la pgina que especifique.Esta pgina suele contener un formulario en el que se obtiene la informacin del nombre de usuario.Para mayor seguridad, el formulario puede intercambiarse mediante el protocolo HTTPS. Cuando la aplicacin obtiene la informacin del formulario, puede llevar a cabo una comprobacin de las credenciales del usuario especficas de la aplicacin.Una cuestin importante es que el proceso de autenticacin est bajo su control (a diferencia de IIS), lo que permite especificar el aspecto del formulario y la forma de almacenar la informacin de usuario.Si un usuario se autentica satisfactoriamente, ASP.NET emite una cookie cifrada que contiene un smbolo que identifica al usuario para su acceso subsiguiente.

La autenticacin mediante formularios es la eleccin ms fcil para las aplicaciones ASP.NET en Internet ya que ofrece un control considerable sobre la forma de autenticacin de los usuarios y permite almacenar una autenticacin en un smbolo del explorador.Para obtener informacin detallada sobre la seguridad de IIS, vea los temas relativos al control de accesos enWindows Server TechCenter for IISen el sitio Web Microsoft TechNet.Para obtener informacin detallada sobre la autenticacin de ASP.NET, veaAutenticacin de ASP.NET.Para obtener informacin detallada sobre la utilizacin de la autenticacin mediante formularios con transicin de protocolos y delegacin restringida en un entorno de dominios Windows Server2003, veaKerberos Protocol Transition and Constrained Delegation.AutorizacinCuando se ejecuta, la aplicacin Web solicita recursos del servidor web y, con frecuencia, tambin de otros procesos, como una base de datos.El proceso de ASP.NET se ejecuta en un contexto de usuario que determina cmo solicitar esos recursos la aplicacin.El proceso ASP.NET se ejecuta como un usuario local especial denominado ASPNET (de forma predeterminada) en Windows2000 y WindowsXP Professional Edition, o se ejecuta como la identidad de la agrupacin de aplicaciones para la aplicacin ASP.NET en Windows2003 (de forma predeterminada, la cuenta local NETWORK SERVICE).Estas cuentas se ejecutan con permisos limitados.Puede especificar un contexto de usuario diferente para el proceso ASP.NET, incluida la cuenta local SYSTEM (que ejecuta la aplicacin en un contexto administrador) o un usuario cuyas credenciales proporcione explcitamente, aunque no se recomienda.En la aplicacin ASP.NET se puede especificar que distintos usuarios tengan acceso autorizado a distintos recursos.Si su aplicacin utiliza autenticacin de Windows, se pueden utilizar permisos de Windows para determinar la autorizacin para obtener acceso a archivos o carpetas especficos del servidor.Otra posibilidad es utilizar autorizacin basada en URL, en la que la autorizacin se puede conceder o denegar segn distintos criterios: Usuarios especficos, o identidades, basados en las credenciales proporcionadas por el usuario. Roles, que son entidades definidas para permitir que varios usuarios compartan privilegios segn un rol o funcin comn. Verbos, que son los procesos HTTP (como GET y POST) para obtener acceso a partes de la aplicacin.Por ejemplo, se puede especificar que todos los usuarios puedan obtener pginas (llevar a cabo el verbo GET) de la aplicacin, pero que nicamente usuarios especficos puedan enviar pginas a la misma.De forma similar, se puede especificar que todos los usuarios puedan obtener (GET) pginas, pero que se deniegue el derecho a enviar a roles especficos.Se puede conceder autorizacin de URL para la aplicacin en su conjunto, o directorio por directorio.Un uso tpico es permitir a los usuarios ver pginas en un directorio pblico, pero conservar las pginas restringidas en un directorio distinto, autorizado nicamente para usuarios o roles especficos.Nota

De forma predeterminada, los archivos estticos, como imgenes y hojas de estilos, no estn sujetos a la autorizacin de ASP.NET cuando se proporcionan a travs de IIS.Las caractersticas de seguridad de IIS se pueden utilizar para restringir el acceso a archivos estticos si no desea que todos los usuarios tengan acceso a los archivos.Si utiliza el servidor de desarrollo de ASP.NET para probar la aplicacin ASP.NET, notar un comportamiento diferente debido a que los archivos estticos estn sujetos a la autorizacin de ASP.NET y no se proporcionarn a un usuario annimo cuando el acceso annimo a esos archivos est deshabilitado.Tambin puede asignar extensiones estticas de nombre de archivo en IIS a la extensin ISAPI de ASP.NET, en cuyo caso se aplicarn las reglas de autorizacin de ASP.NET.

Para obtener ms informacin, veaAutorizacin de ASP.NETyProcedimientos de seguridad bsicos para aplicaciones web.Archivos de configuracin de ASP.NETLas opciones de seguridad de ASP.NET se establecen con los valores de un archivo Web.config.El archivo permite incluir elementos predefinidos para diversas opciones de seguridad, incluidas secciones para autenticacin y autorizacin.Las secciones importantes del archivo Web.config pueden tener el siguiente aspecto.Limitar el acceso a los sitios web ASP.NETLa limitacin del acceso a una aplicacin suele dividirse en dos temas:autenticacin, que es la forma en que una aplicacin identifica quin es el usuario, yautorizacin, que es la forma en que una aplicacin identifica cules son los permisos de este.Este tema ofrece informacin general sobre la autenticacin y la autorizacin en las aplicaciones web ASP.NET.Para obtener informacin ms detallada, veaSeguridad ASP.NET de aplicaciones Web.Autenticar a usuariosLas aplicaciones ASP.NET ofrecen varias opciones diferentes para autenticar a los usuarios.En el caso de las aplicaciones de slo lectura que puede ver cualquiera, utilice la autenticacin annima.Para tener un acceso ms restringido a una aplicacin, debe utilizar algn tipo de autenticacin para identificar a los usuarios.Hay dos identidades que debe tener en cuenta a la hora de autenticar a los usuarios de su aplicacin ASP.NET: la identidad de la aplicacin que se utiliza para tener acceso a los recursos de Windows y la identidad de usuario de ASP.NET que se utiliza para identificar a un usuario ante ASP.NET.Su aplicacin puede ejecutarse sin una identidad de usuario de ASP.NET, pero siempre tendr una identidad de aplicacin para Windows.Para ayudar a proteger su aplicacin, debe restringir la identidad de Windows para la aplicacin a los recursos necesarios, como el acceso a archivos y a bases de datos.Identidad de aplicacin ASP.NETCuando una pgina ASP.NET est en ejecucin, el servidor debe tener un contexto de seguridad, o identidad, para el proceso que est ejecutando el cdigo ASP.NET.Esta identidad se utiliza al proteger recursos mediante la seguridad integrada de Windows, como los archivos protegidos mediante el sistema de archivos NTFS o recursos de red.Por ejemplo, slo la identidad de aplicacin ASP.NET tiene que leer los archivos que contienen el cdigo de aplicacin almacenado en el subdirectorio App_Code de una aplicacin.Por tanto, se puede restringir la configuracin de seguridad de los archivos del directorio App_Code de manera que la identidad de aplicacin ASP.NET slo tenga acceso de lectura.Otro uso frecuente de la identidad de Windows de la aplicacin ASP.NET es como identidad de una conexin a SQL Server mediante seguridad integrada.Para obtener ms informacin, veaListas de control de acceso (ACL) necesarias para ASP.NETyCmo: Obtener acceso a SQL Server mediante la seguridad integrada de Windows.Hay varios factores que determinan la identidad de una aplicacin ASP.NET.De forma predeterminada, las pginas ASP.NET se ejecutan con la identidad de Windows del servicio que procesa las pginas ASP.NET en el servidor web.En un equipo que ejecuta Windows Server2003, esa identidad es la identidad del grupo de aplicaciones del que forma parte la aplicacin ASP.NET (de manera predeterminada, la cuenta NETWORK SERVICE).En los equipos que ejecutan Windows 2000 y Windows XP Professional, la identidad es la cuenta local ASPNET que se crea cuando se instala .NET Framework.Esta identidad se puede configurar a una identidad diferente, si se desea.Para obtener ms informacin, veaConfigurar la identidad de procesos en ASP.NET.Puede modificar la identidad de Windows con la que se ejecuta su pgina ASP.NET mediante el elementoidentityde la seccinsystem.webdel archivo de configuracin.El elementoidentityse puede usar para indicar a ASP.NET que suplante un identificador de usuario de Windows.La suplantacin de una identidad de Windows significa que las pginas ASP.NET para la aplicacin se ejecutarn como esa identidad de Windows.Puede especificar un nombre de usuario y una contrasea para suplantar.Como alternativa, puede habilitar la suplantacin y ASP.NET se ejecutar de una de dos maneras posibles: una identidad annima especificada por IIS, o la identidad del explorador autenticada determinada por IIS (por ejemplo, autenticacin annima, autenticacin de Windows integrada (NTLM), etc.).Para obtener ms informacin, veaSuplantacin de ASP.NET.Si va a suplantar una identidad de Windows, puede ejecutar cdigo que revierta a la identidad original del proceso en lugar del identificador de usuario suplantado.Por eso, en aquellos entornos en los que tenga que mantener separadas las aplicaciones unas de otras, debe aislarlas en grupos de aplicaciones diferentes en equipos que ejecuten Windows Server2003.Cada grupo de aplicaciones debe configurarse con una identidad de Windows nica.Puede determinar fcilmente la identidad de Windows del subproceso del sistema operativo que est ejecutando su pgina ASP.NET mediante la propiedadNamedelWindowsIdentitydevuelto por el mtodoGetCurrent, como se muestra en el ejemplo de cdigo siguiente.

Usuario de ASP.NETLa identidad de usuario de ASP.NET se utiliza para tener acceso a recursos especficos de ASP.NET.Por ejemplo, puede identificar una parte de una aplicacin para que slo est disponible para determinados usuarios, mientras que otras partes de la aplicacin estarn disponibles para todos los usuarios.El elementoauthenticationde la seccinsystem.webdel archivo Web.config de la aplicacin determina el usuario de ASP.NET.Tiene varias opciones para autenticar la identidad de ASP.NET para su aplicacin.Puede utilizar el nombre de usuario de Windows determinado por IIS, autenticacin de formularios de ASP.NET, autenticacin Passport o un esquema de autenticacin personalizado.Se puede tener acceso a la identidad de ASP.NET utilizando la propiedadUserdelHttpContextactual.Para obtener informacin detallada, veaAutenticacin de ASP.NET.Si est utilizando autenticacin de formularios de ASP.NET o una solucin de autenticacin personalizada para proporcionar la identidad de ASP.NET, puede utilizar la pertenencia a ASP.NET para ofrecer funcionalidad de almacn de datos de usuarios y administracin de usuarios.Para obtener ms informacin, veaAdministrar usuarios mediante pertenencia.Autorizar a usuariosLa autorizacin implica restringir el acceso de los usuarios slo a los recursos necesarios.Esto incluye restringir el acceso slo a los archivos, las bases de datos y las partes de su aplicacin que sean necesarios.Adems, esto incluye el uso de Seguridad de acceso a cdigo para restringir el acceso al cdigo.Puede restringir el acceso a archivos utilizando listas de control de acceso de NTFS yFileAuthorizationModule.Para obtener ms informacin, veaAutorizacin de ASP.NETyListas de control de acceso (ACL) necesarias para ASP.NET.Puede restringir el acceso a determinadas partes de su aplicacin utilizandoUrlAuthorizationModuley Administracin de funciones de ASP.NET.Para obtener ms informacin, veaAutorizacin de ASP.NETyAdministrar autorizaciones con roles.

aplicaciones Web

ASP.NET, conjuntamente con Microsoft Internet Information Services (IIS), puede autenticar las credenciales del usuario como nombres y contraseas mediante los mtodos de autenticacin siguientes: Windows: bsica, implcita, y Autenticacin de Windows integrada (NTLM o Kerberos). Autenticacin mediante formularios, con la que crea una pgina de inicio de sesin y se administra la autenticacin en la aplicacin. Autenticacin mediante certificados de clienteASP.NET controla el acceso a la informacin de los sitios comparando las credenciales autenticadas, o representaciones de las mismas, con los permisos del sistema de archivos de Microsoft Windows NT o con un archivo XML que contiene la lista de usuarios autorizados, funciones autorizadas (grupos) o verbos HTTP autorizados.Esta seccin contiene temas en los que se describen las caractersticas de seguridad especficas de ASP.NET.

Escribir cdigo seguro es un desafo en cualquier lenguaje.JScript incluye algunas reas en las que los desarrolladores podran usar el lenguaje de manera insegura inadvertidamente porque el lenguaje no les obliga a usar los procedimientos ms eficaces.A pesar de que uno de los objetivos que se plantearon al disear JScript fue la seguridad, su principal finalidad es promover el desarrollo rpido de aplicaciones tiles.En algunos casos, estos dos objetivos se contraponen.Puede evitar los temas de seguridad si conoce los posibles problemas que existen en las distintas reas que se enumeran a continuacin.Estas consideraciones en materia de seguridad, excepto el mtodoeval, son consecuencia de la nueva funcionalidad que ofrece .NET Framework.El mtodo evalLa caracterstica de JScript que peor se usa es el mtodoeval, que permite la ejecucin dinmica del cdigo fuente de JScript.Dado que las aplicaciones de JScript que usan el mtodoevalpueden ejecutar cualquier tipo de cdigo que les pase un programa, todas las llamadas al mtodoevalsuponen un riesgo para la seguridad.A menos que la aplicacin requiera flexibilidad para ejecutar cualquier tipo de cdigo, considere escribir slo el cdigo que la aplicacin pasa al mtodoeval.Atributos de seguridadSe pueden usar los atributos de seguridad de .NET Framework para reemplazar explcitamente la configuracin de seguridad predeterminada de JScript.No obstante, no se deben modificar los valores predeterminados de seguridad a menos que se sepa exactamente qu se est haciendo.Concretamente, algo que no se debe aplicar es el atributo APTCA (AllowPartiallyTrustedCallersAttribute) personalizado ya que, en general, los llamadores que no son de confianza no pueden llamar a cdigo JScript de forma segura.Si crea un ensamblado de confianza con APTCA que, ms tarde, cargue la aplicacin, un llamador de confianza parcial podra obtener acceso a los ensamblados de plena confianza de dicha aplicacin.Para obtener ms informacin, veaInstrucciones de codificacin segura.Cdigo de confianza parcial y cdigo hospedado de JScriptEl motor que hospeda JScript permite a cualquier cdigo al que se llame modificar partes del motor, como variables globales, variables locales y cadenas de prototipo de cualquier objeto.Asimismo, todas las funciones pueden modificar las propiedades o los mtodos expando de cualquier objeto expando que se les pase.Por consiguiente, si una aplicacin de JScript llama a cdigo de confianza parcial o si se ejecuta en una aplicacin con otro tipo de cdigo (como en un host de Visual Studio para Aplicaciones [VSA]), se podra modificar el comportamiento de la aplicacin.Como consecuencia, cualquier cdigo JScript de una aplicacin (o de una instancia de una claseAppDomain) debe ejecutarse en un nivel de confianza que no sea superior al resto del cdigo de la aplicacin.De lo contrario, el otro cdigo podra manipular el motor para la clase de JScript, lo que, a su vez, podra modificar los datos y afectar al cdigo restante de la aplicacin.Para obtener ms informacin, vea_AppDomain.Acceso al ensambladoJScript puede hacer referencia a los ensamblados mediante nombres seguros y nombres de texto simple.Una referencia a un nombre seguro incluye la informacin de versin del ensamblado, as como una firma criptogrfica que confirma la integridad y la identidad de dicho ensamblado.Si bien resulta ms fcil utilizar un nombre simple al hacer referencia a un ensamblado, un nombre seguro ayuda a proteger el cdigo en caso de que otro ensamblado del sistema tenga el mismo nombre simple, pero distinta funcionalidad.Para obtener ms informacin, veaCmo: Hacer referencia a un ensamblado con nombre seguro.SubprocesamientoEl runtime de JScript no es seguro para subprocesos.Por consiguiente, el cdigo JScript multiproceso puede tener un comportamiento impredecible.Si desarrolla un ensamblado en JScript, tenga en cuenta que es posible que se use en un contexto multiproceso.Debe usar clases del espacio de nombresSystem.Threading, como la claseMutex, para garantizar que el cdigo JScript del ensamblado se ejecute con la sincronizacin adecuada.Dado que resulta difcil escribir cdigo de sincronizacin apropiado en cualquier lenguaje, no debe intentar escribir ensamblados de propsito general en JScript, a menos que sepa exactamente cmo implementar el cdigo de sincronizacin necesario.Para obtener ms informacin, veaSystem.Threading.Nota

No es necesario escribir cdigo de sincronizacin para las aplicaciones ASP.NET escritas en JScript, ya que ASP.NET administra la sincronizacin de todos los subprocesos que genera.No obstante, los controles web escritos en JScript deben contener cdigo de sincronizacin porque se comportan como los ensamblados.

Errores en tiempo de ejecucinDado que JScript es un lenguaje en el que no es necesario declarar los tipos de datos, tolera mejor las posibles divergencias entre los tipos que otros lenguajes, como Visual Basic y Visual C#.Debido a que la divergencia entre los tipos puede producir errores en tiempo de ejecucin en las aplicaciones, es importante detectarlas al desarrollar el cdigo.Se puede usar la marca/warnaserrorcon el compilador de la lnea de comandos o el atributowarninglevelde la directiva@ Pageen las pginas ASP.NET.Para obtener ms informacin, vea/warnaserrory@ Page.Modo de compatibilidadLos ensamblados compilados en modo de compatibilidad (con la opcin/fast-) son menos seguros que los compilados en modo rpido (el modo predeterminado).La opcin/fast-habilita caractersticas del lenguaje que no estn disponibles de manera predeterminada, pero que son necesarias para la compatibilidad con los scripts escritos para la versin 5.6 y versiones anteriores de JScript.Por ejemplo, las propiedades expando se pueden agregar dinmicamente a los objetos intrnsecos, como el objetoString, en modo de compatibilidad.El modo de compatibilidad sirve para ayudar a los desarrolladores a crear ejecutables independientes a partir de cdigo JScript heredado.Cuando desarrolle nuevos ejecutables o bibliotecas, utilice el modo predeterminado.As, no slo ayudar a proteger las aplicaciones, sino que tambin ayudar a garantizar un mayor rendimiento y una mejor interaccin con otros ensamblados.Para obtener ms informacin, vea/fast.