ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO FACULTAD DE INFORMATICA Y ELECTRONICA ESCUELA DE INGENIERIA EN SISTEMAS Perteneciente A: Mayra Peñafiel Definición de Aplicación WEB. En la ingeniería software se denomina aplicación web a aquellas aplicaciones que los usuarios pueden utilizar accediendo a un servidor web a través de Internet o de una intranet mediante un navegador. En otras palabras, es una aplicación software que se codifica en un lenguaje soportado por los navegadores web, y en la que se confía la ejecución de la aplicación al navegador. Características generales: Actualmente son populares por lo práctico al permitir una comunicación mas fluida y dinámica en la computación Cliente-Servidor. El alto grado de desarrollo actual permite la actualización y el mantenimiento (vía Internet) de dichas Aplicaciones, sin que se deba distribuir e instalar software específico o versiones individuales a un usuario cada vez. Una página Web puede contener elementos que permiten una comunicación activa entre el usuario y la información (vía Servidor); logrando el usuario acceso a los datos de modo interactivo, gracias a que la página responderá a cada una de sus acciones. Las aplicaciones web generan dinámicamente una serie de páginas en un formato estándar, como HTML o XHTML, que soportan por los navegadores web comunes. Se utilizan lenguajes interpretados en el lado del cliente, tales como JavaScript, para añadir elementos dinámicos a la interfaz de usuario. Generalmente cada página web en particular se envía al cliente como un documento estático, pero la secuencia de páginas ofrece al usuario una experiencia interactiva. Las aplicaciones web para Internet e Intranet presentan una serie de ventajas y beneficios con respecto al software de escritorio, con lo cual logrará aprovechar y acoplar los recursos de su empresa de una forma mucho más práctica que el software tradicional. Entre los beneficios que las aplicaciones desarrolladas para la web tienen respecto a las aplicaciones de escritorio se encuentran: Beneficios de las aplicaciones web: - El trabajo a distancia se realiza con mayor facilidad -Para trabajar en la aplicación web solo se necesita un computador con un buen navegador Web y conexión a internet.
- Las aplicaciones Web no necesitan conocimientos previos de informática. Con una aplicación Web tendrá total disponibilidad en cuanto a hora y lugar, podra trabajar en ella en cualquier momento y en cualquier lugar del mundo siempre que tenga conexión a internet. - Las aplicaciones Web le permiten centralizar todas las áreas de trabajo. Ventajas de las aplicaciones web - Compatibilidad multiplataforma. Las aplicaciones web tienen un camino mucho más sencillo para la compatibilidad multiplataforma que las aplicaciones de software descargables. - Actualización. Las aplicaciones basadas en web están siempre actualizadas con el último lanzamiento. - Inmediatez de acceso. Las aplicaciones basadas en web no necesitan ser descargadas, instaladas y configuradas. Usted accede a su cuenta online trabajar sin importar cuál es su configuración o su hardware. - Menos requerimientos de memoria. Las aplicaciones basadas en web tienen muchas más razonables demandas de memoria RAM de parte del usuario final que los programas instalados localmente. - Menos Bugs. Las aplicaciones basadas en web deberán ser menos propensas a colgarse y crear problemas técnicos debido a software o conflictos de hardware con otras aplicaciones existentes, protocolos o software personal interno. Con aplicaciones basadas en web, todos utilizan la misma versión, y todos los bugs pueden ser corregidos tan pronto como son descubiertos. - Múltiples usuarios concurrentes. Las aplicaciones basadas en web pueden realmente ser utilizada por múltiples usuarios al mismo tiempo. Procedimientos de seguridad básicos para aplicaciones Web
El tema de la creación de una aplicación Web segura es muy amplio ya que requiere realizar un estudio para comprender los puntos vulnerables de la seguridad. También es necesario familiarizarse con las posibilidades de seguridad que ofrecen Windows, .NET Framework y ASP.NET. Finalmente, resulta vital entender cómo utilizar estas funciones de seguridad para contrarrestar las amenazas. Aunque no se tenga mucha experiencia en seguridad, existen unas medidas básicas que se deberían adoptar para proteger cualquier aplicación Web. La lista siguiente proporciona pautas de seguridad mínima que se aplican a todas las aplicaciones Web y que se deberían seguir:
Recomendaciones generales de seguridad para aplicaciones Web Ejecutar aplicaciones con privilegios mínimos Conocer a los usuarios Protegerse contra entradas malintencionadas Tener acceso seguro a bases de datos Crear mensajes de error seguros Mantener segura la información confidencial Usar cookies de forma segura Protegerse contra amenazas de denegación de servicio Nota Para obtener unas directrices completas y detalladas sobre seguridad que le ayudarán a diseñar, desarrollar, configurar e implementar aplicaciones Web ASP.NET más seguras, vea los módulos de seguridad que se proporcionan en Microsoft Patterns and Practices.
Recomendaciones generales de seguridad para aplicaciones Web No obstante, incluso los métodos de seguridad de aplicaciones más 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 guárdelas en lugar seguro. Mantenga el equipo del servidor en un lugar físico seguro, de forma que los usuarios no autorizados no puedan tener acceso a él, apagarlo o llevárselo. Utilice el sistema de archivos NTFS de Windows, no el FAT32. NTFS ofrece mucha más seguridad que el FAT32. Para obtener información detallada, vea la documentación de Windows. Proteja el equipo del servidor Web y todos los demás equipos de la misma red con contraseñas rigurosas. Proteja los servicios IIS. Para obtener una información más 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 tráfico entrante y saliente. Establezca y haga respetar una política que prohíba a los usuarios tener sus contraseñas escritas en una ubicación fácil de localizar.
Use un firewall. Para conocer las recomendaciones, vea el artículo en inglés 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 sesión en el sistema o la existencia de un número extremadamente alto de solicitudes en el servidor Web.
Ejecutar aplicaciones con privilegios mínimos Cuando la aplicación se ejecuta, lo hace en un contexto que tiene privilegios específicos en el equipo local y posiblemente en equipos remotos. Para obtener información sobre cómo configurar identidad de aplicaciones, vea Configurar la identidad de procesos en ASP.NET. Para ejecutar con privilegios mínimos, siga estas instrucciones:
No ejecute la aplicación con la identidad de un usuario de sistema (administrador). Ejecute la aplicación en el contexto de un usuario con los mínimos privilegios factibles. Establezca permisos (Listas de control de acceso, o ACL) en todos los recursos requeridos por la aplicación y utilice la configuración menos permisiva posible. Por ejemplo, si resulta viable en la aplicación, establezca que los archivos sean de sólo lectura. Para obtener una lista de los permisos ACL mínimos requeridos para la identidad de su aplicación ASP.NET, vea Listas de control de acceso (ACL) necesarias para ASP.NET. Mantenga los archivos de la aplicación Web en una carpeta ubicada debajo de la raíz de la aplicación. No dé a los usuarios la opción de especificar una ruta que permita tener acceso a ningún archivo de la aplicación. Esto ayudará a evitar que los usuarios obtengan acceso a la raíz del servidor.
Conocer a los usuarios En muchas aplicaciones, los usuarios tienen acceso al sitio de forma anónima (sin tener que proporcionar las credenciales). Si es el caso, la aplicación 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 aplicación pertenece a una intranet, configúrela para usar la seguridad integrada de Windows. De este modo, las credenciales de inicio de sesión de los usuarios se pueden usar para obtener acceso a los recursos. Para obtener más información, vea Suplantación de ASP.NET.
Si precisa recabar credenciales del usuario, utilice una de las estrategias de autenticación de ASP.NET. Para obtener un ejemplo, vea Administrar usuarios mediante suscripciones.
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 fácil enviar información potencialmente peligrosa desde el cliente a la aplicación. Para protegerse contra las entradas malintencionadas, siga estas instrucciones:
En las páginas Web ASP.NET, filtre la entrada de los usuarios para comprobar si existen etiquetas HTML, que pueden contener una secuencia de comandos. Para obtener información detallada, vea Cómo: Proteger una aplicación Web frente a ataques mediante secuencias de comandos aplicando codificación HTML a las cadenas. Nunca repita (muestre) entrada de los usuarios sin filtrar. Antes de mostrar información que no sea de confianza, codifique los elementos HTML para convertir cualquier secuencia de comandos potencialmente peligrosa en cadenas visibles, pero no ejecutables. No almacene nunca información proporcionada por el usuario sin filtrar en una base de datos. Si desea aceptar algún elemento de código HTML de un usuario, fíltrelo manualmente. En el filtro, defina explícitamente lo que aceptará. No cree un filtro que intente eliminar cualquier entrada malintencionada, ya que es muy difícil anticipar todas las posibilidades. No dé por sentado que la información obtenida del encabezado de solicitud HTTP (en el objeto HttpRequest) es segura. Proteja las cadenas de consulta, cookies, etc. Tenga en cuenta que la información que el explorador envía al servidor (información del agente de usuario) puede ser suplantada, en caso de que resulte importante para la aplicación en cuestión. Si es posible, no almacene información confidencial en un lugar accesible desde el explorador, como campos ocultos o cookies. Por ejemplo, no almacene una contraseña en una cookie. Nota El estado de vista se almacena en un campo oculto en un formato codificado que, de forma predeterminada, incluye un código de autenticación de mensajes (MAC) para que la página pueda determinar si se ha manipulado el estado de vista. Si la información confidencial se almacena en estado de vista, cifre estableciendo la propiedad ViewStateEncryptionMode de la página en true. Para obtener más información, vea Proteger el estado de vista.
Tener acceso seguro a bases de datos
Normalmente, las bases de datos tienen sus propios sistemas de seguridad. Un aspecto importante de una aplicación Web protegida es diseñar 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 quién puede tener acceso a los recursos de dicha base. La estrategia exacta dependerá de la base de datos y de la aplicación: o Si resulta viable en la aplicación, use la seguridad integrada de forma que sólo los usuarios autenticados mediante Windows puedan tener acceso a la base de datos. La seguridad integrada es más segura que pasar las credenciales explícitas a la base de datos. o Si la aplicación utiliza el acceso anónimo, cree un único usuario con permisos muy limitados, y haga que las consultas se ejecuten conectándose como dicho usuario. No cree instrucciones SQL concatenando cadenas que contengan información aportada por los usuarios. En su lugar, cree una consulta parametrizada y use la entrada del usuario para establecer los valores de los parámetros. Si debe almacenar un nombre de usuario y su contraseña en algún lugar para utilizarlos como las credenciales de inicio de sesión de la base de datos, almacénelos en el archivo Web.config y asegure el archivo con configuración protegida. Para obtener información detallada, vea Cifrar información de configuración mediante una configuración protegida.
Para obtener más información sobre cómo 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 información importante sobre la aplicación a partir de los mensajes de error que ésta muestra. Siga estas instrucciones:
No escriba mensajes de error que presenten información que pudiera resultar útil a los usuarios malintencionados, como un nombre de usuario. Configure la aplicación para que no muestre errores detallados a los usuarios. Si desea mostrar mensajes de error detallados para la depuración, determine primero si quien los recibirá es un usuario local con respecto al servidor Web. Para obtener información detallada, vea Cómo: Mostrar mensajes de error seguros. Utilice el elemento de configuración customErrors para controlar quién ve las excepciones desde el servidor. Cree un sistema de administración de errores personalizado para las situaciones que sean propensas a los errores, como el acceso a las bases de datos. Para obtener más información, vea Control de errores en aplicaciones y páginas ASP.NET.
Mantener segura la información confidencial
Información confidencial es toda aquella información que se desea conservar privada. Un ejemplo de información confidencial es una contraseña o una clave cifrada. Si un usuario malintencionado consigue llegar a la información confidencial, los datos protegidos se verán expuestos. Siga estas instrucciones:
Si la aplicación transmite información confidencial entre el explorador y el servidor, plantéese utilizar el protocolo SSL (Secure Sockets Layer). Para obtener detalles sobre cómo asegurar un sitio con SSL, vea el artículo Q307267 en inglés, "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 configuración protegida para proteger la información confidencial en archivos de configuración como los archivos Web.config o Machine.config. Para obtener más información, vea Cifrar información de configuración mediante una configuración protegida. Si debe almacenar información confidencial, no lo haga en una página Web, ni siquiera en un formato que piense que la gente no podrá verlo (por ejemplo, código 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 información específica disponible sobre los usuarios. Sin embargo, como se envían al explorador del equipo, son vulnerables a la suplantación u otros usos malintencionados. Siga estas instrucciones:
No almacene información vital en cookies. Por ejemplo, no almacene, ni siquiera temporalmente, la contraseña de un usuario en una cookie. Como norma, no guarde nada en una cookie que, si se produce una suplantación, pueda comprometer el funcionamiento de su aplicación. En lugar de eso, guarde en la cookie una referencia a la ubicación del servidor en la que se encuentra la información. Establezca el período de tiempo mínimo posible para la fecha de caducidad de las cookies. Si es posible, evite las cookies permanentes. Plantéese cifrar la información que contienen las cookies. Considere establecer las propiedades Secure y HttpOnly de las cookies como true.