Está en la página 1de 23

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 Architecture
Proporciona informacin general sobre las relaciones entre los subsistemas y la
infraestructura ASP.NET, con respecto a la seguridad.
ASP.NET Web Application Security
Explica cmo solucionar problemas de autorizacin y autenticacin en ASP.NET.
Security Considerations for JScript
Describe algunos problemas relacionados con la seguridad que pueden encontrar los
programadores de JScript.
How to: Use Transport Security
Describe cmo usar la seguridad de transporte para la autenticacin cuando se establece
conexin con un servicio WCF.
Arquitectura de seguridad de
ASP.NET
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, vea Conceptos clave de seguridad.
Integrar autenticacin de ASP.NET con IIS
Adems 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 IIS 7 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, vea Configurar 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, vea Conceptos clave de seguridad.
Integrar autenticacin de ASP.NET con IIS
Adems 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 IIS 7 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, vea Configurar 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.NET
La 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, vea Elemento configSections (Esquema de configuracin general).
Hay tres subsecciones principales en un archivo Web.config: las
secciones autenticacin, autorizacin e identidad. 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, vea Cmo: Configurar directorios
concretos mediante la configuracin de la ubicacin.
Se puede utilizar el elemento de configuracin ubicacin para especificar el archivo o directorio a
los que se deben aplicar las opciones predeterminadas. Para obtener ms informacin,
vea Elemento configSections (Esquema de configuracin general) y Configurar archivos y
subdirectorios especficos. Para obtener ms informacin general sobre la configuracin de
ASP.NET, vea Informacin general sobre la configuracin de ASP.NET.
El ejemplo siguiente muestra la sintaxis de las secciones de seguridad de un archivo de
configuracin:
<authentication mode="[Windows|Forms|None]">
<forms name="name"
loginUrl="url"
protection="[All|None|Encryption|Validation]"
timeout="minutes"
path="path"
requireSSL="[true|false]"
slidingExpiration="[true|false]">
defaultUrl="string"
cookieless="[UseCookies|UseUri|AutoDetect|UseDeviceProfile]"
domain="string"
<credentials passwordFormat="[Clear|MD5|SHA1]">
<user name="********"
password="********"/>
</credentials>
</forms>
</authentication>

<authorization>
<allow users="comma-separated list of users"
roles="comma-separated list of roles"
verbs="comma-separated list of verbs" />
<deny users="comma-separated list of users"
roles="comma-separated list of roles"
verbs="comma-separated list of verbs" />
</authorization>

<identity impersonate ="[true|false]"
userName="domain\username"
password="password" />

<trust level="[Full|High|Medium|Low|Minimal]"
originUrl=""/>

<securityPolicy>
<trustLevel name="Full" policyFile="internal"/>
<trustLevel name="High" policyFile="web_hightrust.config"/>
<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
<trustLevel name="Low" policyFile="web_lowtrust.config"/>
<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>
Los valores predeterminados de estos elementos se incluyen en la tabla siguiente.
Valor predeterminado Descripcin
<allow roles="" /> Una cadena vaca que indica que se permiten todas las funciones de forma
predeterminada.
<allow users="*" /> Una cadena vaca que indica que todos los usuarios tienen acceso (no se requiere
ninguna autenticacin).
<allow verbs="" /> Una cadena vaca que indica que no se asignan verbos de forma predeterminada.
<authentication mode="Windows" /> El tipo de autenticacin que determina el origen del valor User actual. El valor
predeterminado es Windows.
<credentials passwordFormat="SHA1" /> El algoritmo hash que se utiliza en las contraseas. El valor predeterminado es SHA1.
<deny roles="" /> Una cadena vaca que indica que no se deniega ninguna funcin de forma
predeterminada.
<deny users="" /> Una cadena vaca que indica que no se deniega ningn usuario de forma
predeterminada.
<deny verbs="" /> Una cadena vaca que indica que no se asignan verbos de forma predeterminada.
<forms cookieless="UseDeviceProfile" /> Mtodo que se usa para almacenar el vale de autenticacin de formularios en el
cliente. Los valores vlidos
sonUseCookies, UseUri, AutoDetect, UseDeviceProfile (predeterminado).
<forms defaultUrl="default.aspx" /> Cadena que indica la direccin URL de la pgina a la que se redirecciona despus del
inicio de sesin.
<forms domain="" /> Cadena vaca que indica que no se ha especificado ningn dominio para la cookie.
<forms loginUrl="logon.aspx" /> Direccin URL a la que se dirige la solicitud si establece la
autenticacin mode como Forms y si la solicitud no tiene un vale de autenticacin
vlido.
<forms name=".ASPXAUTH" /> El nombre bajo el que la cookie de autenticacin de formularios se almacena en el
equipo del usuario.
<forms path="/" /> 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.
<forms protection="All" /> La seguridad que se ha aplicado al vale de autenticacin de formularios. Los valores
incluyen All, None,Encryption y Validation.
<forms timeout="30" /> El tiempo de espera en minutos antes de que el vale de autenticacin de formularios
expire y los usuarios tengan que volver a autenticarse.
<forms requireSSL="false" /> Un valor booleano que indica si se requiere una conexin SSL para transmitir la
cookie de autenticacin.
<forms slidingExpiration="true" /> Un valor booleano que indica si est habilitado el plazo de expiracin. Para obtener
ms informacin, vea la propiedad SlidingExpiration.
<identity impersonate="false" /> Un valor booleano que indica si la suplantacin est deshabilitada. Para obtener ms
informacin, veaSuplantacin de ASP.NET.
<identity userName="" /> Una cadena vaca que indica que no se especifica ninguna identidad de usuario de
forma predeterminada.
<identity password="" /> Una cadena vaca que indica que no se especifica ninguna contrasea para la identidad
de usuario de forma predeterminada.
<trust level="Full" originUrl="" /> La directiva de seguridad que se aplicar a la aplicacin.
<trustLevel name="Full"
policyFile="internal"/>
El archivo de directivas predeterminado para el nivel de confianza Full.
<trustLevel name="High"
policyFile="web_hightrust.config"/>
El archivo de directivas predeterminado para el nivel de confianza High.
<trustLevel name="Medium"
policyFile="web_mediumtrust.config"/>
El archivo de directivas predeterminado para el nivel de confianza Medium.
<trustLevel name="Low"
policyFile="web_lowtrust.config"/>
El archivo de directivas predeterminado para el nivel de confianza Low.
<trustLevel name="Minimal"
policyFile="web_minimaltrust.config"/>
El archivo de directivas predeterminado para el nivel de confianza Minimal.

Funcionamiento de la
seguridad en ASP.NET
La 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
seguridad
Descripcin
Autenticacin Ayuda 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.
Autorizacin Limita 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, vea Seguridad de acceso del
cdigo de ASP.NET.
Informacin general sobre las
amenazas para la seguridad
de las aplicaciones web
Si 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 especificacin Microsoft Patterns and Practices.
La tecnologa de seguridad es slo parte de la solucin
Implementar 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 SQL Server o de otros orgenes de datos que pueda utilizar
su aplicacin.
Modelo de amenazas
Una 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.
Suplantacin
Suplantar (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.
Manipulacin
Manipular significa 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 los ataques 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.
Repudio
Una amenaza de repudio implica 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 informacin
Revelacin de informacin significa 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 servicio
Un ataque de denegacin de servicio consiste 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 permiten limitar las 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 privilegio
Un ataque de elevacin de privilegios consiste 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 web
El tema de la creacin de una aplicacin Web segura es muy amplio ya 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 servicio
Recomendaciones generales de seguridad para
aplicaciones Web
No 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
de Microsoft 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 ingls Microsoft
Firewall Guidelines en 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, consulte Microsoft 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 mnimos
Cuando 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, vea Configurar 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 aplicacin y 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,
vea Listas 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 usuarios
En 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, vea Suplantacin de
ASP.NET.
Si precisa recabar credenciales del usuario, utilice una de las estrategias de autenticacin de
ASP.NET. Para obtener un ejemplo, vea Administrar usuarios mediante pertenencia.
Protegerse contra entradas malintencionadas
Como 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,
vea Cmo: 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
objeto HttpRequest) 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 propiedad ViewStateEncryptionMode de la pgina en true.
Tener acceso seguro a bases de datos
Normalmente, 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:
o 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.
o 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, vea Cifrar la informacin de configuracin mediante una configuracin protegida.
Para obtener ms informacin sobre cmo tener acceso a los datos de forma segura, vea Proteger
el acceso a datos y Proteger aplicaciones de ADO.NET.
Crear mensajes de error seguros
Si 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, vea Cmo: Mostrar mensajes de error seguros.
Utilice el elemento de configuracin customErrors para 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,
vea Control de errores en aplicaciones y pginas ASP.NET.
Mantener segura la informacin confidencial
Informacin 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, vea Cifrar 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
nombres System.Security.Cryptography.
Usar cookies de forma segura
Las 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 propiedades Secure y HttpOnly de las cookies como true.
Protegerse contra amenazas de denegacin de servicio
Un 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 valor maxRequestLength est en kilobytes:
<configuration>
<system.web>
<httpRuntime maxRequestLength="4096" />
</system.web>
</configuration>
Asimismo puede utilizar la propiedad RequestLengthDiskThreshold para reducir la
sobrecarga de memoria de grandes cargas y devoluciones de formularios.
Acceso a SQL Server desde
una aplicacin web
Cuando 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 seccin
Trmino Definicin
Cmo: Obtener acceso a SQL Server mediante la seguridad
integrada de Windows
Proporciona 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 asignado
Proporciona 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 local Proporciona 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 predeterminadas
Proporciona 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 ejecucin
El 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.NET
IIS 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.
Autenticacin
En 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, vea Autenticacin de
ASP.NET.
Tipo de autenticacin Descripcin
Acceso annimo Para 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
objeto WindowsPrincipal establecido como el valor de la propiedad User delHttpContext actual.
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 en Windows Server TechCenter for IIS en el sitio Web Microsoft TechNet. Para obtener
informacin detallada sobre la autenticacin de ASP.NET, vea Autenticacin 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
Server 2003, vea Kerberos Protocol Transition and Constrained Delegation.
Autorizacin
Cuando 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 Windows 2000
y Windows XP Professional Edition, o se ejecuta como la identidad de la agrupacin de aplicaciones
para la aplicacin ASP.NET en Windows 2003 (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, vea Autorizacin de ASP.NET y Procedimientos de seguridad bsicos
para aplicaciones web.
Archivos de configuracin de ASP.NET
Las 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.NET
La 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, y autorizacin, 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, vea Seguridad ASP.NET de aplicaciones Web.
Autenticar a usuarios
Las 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.NET
Cuando 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, vea Listas de control de acceso (ACL)
necesarias para ASP.NET y Cmo: 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 Server 2003,
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, vea Configurar la identidad de procesos en ASP.NET.
Puede modificar la identidad de Windows con la que se ejecuta su pgina ASP.NET mediante el
elemento identity de la seccin system.web del archivo de configuracin. El elemento identity se
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, vea Suplantacin 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 Server 2003. 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 propiedad Name delWindowsIdentity devuelto por
el mtodo GetCurrent, como se muestra en el ejemplo de cdigo siguiente.
<%=System.Security.Principal.WindowsIdentity.GetCurrent().Name%>
Usuario de ASP.NET
La 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 elemento authentication de la seccin system.web del 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
propiedad User del HttpContext actual. Para obtener informacin detallada, vea Autenticacin 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, vea Administrar usuarios mediante pertenencia.
Autorizar a usuarios
La 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
y FileAuthorizationModule. Para obtener ms informacin, vea Autorizacin de ASP.NET y Listas de
control de acceso (ACL) necesarias para ASP.NET.
Puede restringir el acceso a determinadas partes de su aplicacin
utilizando UrlAuthorizationModule y Administracin de funciones de ASP.NET. Para obtener ms
informacin, vea Autorizacin de ASP.NET y Administrar 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 cliente
ASP.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
mtodo eval, son consecuencia de la nueva funcionalidad que ofrece .NET Framework.
El mtodo eval
La caracterstica de JScript que peor se usa es el mtodo eval, que permite la ejecucin dinmica del
cdigo fuente de JScript. Dado que las aplicaciones de JScript que usan el mtodo eval pueden
ejecutar cualquier tipo de cdigo que les pase un programa, todas las llamadas al
mtodo eval suponen 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
mtodo eval.
Atributos de seguridad
Se 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, vea Instrucciones de codificacin segura.
Cdigo de confianza parcial y cdigo hospedado de
JScript
El 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
clase AppDomain) 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 ensamblado
JScript 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, vea Cmo: Hacer referencia a un
ensamblado con nombre seguro.
Subprocesamiento
El 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 nombres System.Threading, como la clase Mutex, 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,
vea System.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 ejecucin
Dado 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 /warnaserror con el compilador de la lnea de comandos o el atributo warninglevel de la
directiva @ Page en las pginas ASP.NET. Para obtener ms informacin, vea /warnaserror y @
Page.
Modo de compatibilidad
Los 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 objeto String, 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.

También podría gustarte