miércoles, 27 de mayo de 2015

Introducción General



Introducción

En la ingeniería de software se denomina aplicación web a aquellas herramientas 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 en la que se confía la ejecución al navegador.

Las aplicaciones web son populares debido a lo práctico del navegador web como cliente ligero, a la independencia del sistema operativo, así como a la facilidad para actualizar y mantener aplicaciones web sin distribuir e instalar software a miles de usuarios potenciales. Existen aplicaciones como los webmails, wikis, weblogs, tiendas en línea que son ejemplos bastante conocidos de aplicaciones web.

Es importante mencionar que una página Web puede contener elementos que permiten una comunicación activa entre el usuario y la información. Esto permite que el usuario acceda a los datos de modo interactivo, gracias a que la página responderá a cada una de sus acciones, como por ejemplo rellenar y enviar formularios, participar en juegos diversos y acceder a gestores de base de datos de todo tipo.

Características y Ventajas de las Aplicaciones Online

Una aplicación web es un sistema informático que los usuarios utilizan accediendo a un servidor web, a través de Internet o de una intranet. Las aplicaciones web son populares debido a la practicidad del navegador web, que actualmente, esta disponible tanto en equipos de escritorio, notebooks, celulares, tablet, etc. La facilidad para actualizar y mantener aplicaciones web sin distribuir e instalar software en miles de potenciales clientes es otra razón de su popularidad. 
Compatibilidad multiplataforma: Una misma versión de la aplicación puede correr sin problemas en múltiples plataformas como Windows, Linux, Mac, Android, etc.
Actualización: Las aplicaciones web siempre se mantienen actualizadas y no requieren que el usuario deba descargar actualizaciones y realizar tareas de instalación.
Acceso inmediato y desde cualquier lugar:Las aplicaciones basadas en tecnologías web no necesitan ser descargadas, instaladas y configuradas. Además pueden ser accedidas desde cualquier computadora conectada a la red en donde se accede a la aplicación.
Menos requerimientos de hardware: Pueden funcionar en cualquier equipo que disponga de un navegador web. Esto aplica tanto a celulares, tablets y otros dispositivos modernos.
Menos Bugs (errores): Deberían ser menos propensas a tildarse y crear problemas técnicos debido a problemas de software y conflictos de hardware. Otra razón es que con aplicaciones basadas en web todos utilizan la misma versión, y los bugs pueden ser corregidos tan pronto como son descubiertos beneficiando inmediatamente a todos los usuarios del sistema.
Seguridad en los datos: Los datos se alojan en servidores ubicados en datacenters con toda la infraestructura necesaria para asegurar la protección de datos y el funcionamiento constante de las aplicaciones.

martes, 26 de mayo de 2015

Introducción a las Aplicaciones Web

Introducción a las Aplicaciones Web


La idea fundamental es que los navegadores, browsers, presentan documentos escritos en HTML que han obtenido de un servidor Web. Estos documentos HTML habitualmente presentan información de forma estática, sin más posibilidad de interacción con ellos.

El modo de crear los documentos HTML ha variado a lo largo de la corta vida de las tecnologías Web pasando desde las primeras páginas escritas en HTML almacenadas en un fichero en el servidor Web hasta aquellas que se generan al vuelo como respuesta a una acción del cliente y cuyo contenido varía según las circunstancias.

Además, el modo de generar páginas dinámicas ha evolucionado, desde la utilización del CGI ,Common Gateway Interface, hasta los servlets pasando por tecnologías tipo JavaServer Pages. Todas estas tecnologías se encuadran dentro de aquellas conocidas como Server Side, ya que se ejecutan en el servidor web.

Otro aspecto que completa (¿complica?) el panorama son las inclusiones del lado del cliente, Client Side, que se refieren a las posibilidades de que las páginas lleven incrustado código que se ejecuta en el cliente, como por ejemplo JavaScript y programas Java.

El esquema general de la situación se puede ver en la Figura donde se muestran cada tipo de tecnología involucrada en la generación e interacción de documentos Web.






A continuación se va a intentar describir las principales características y funcionalidades de las diferentes tecnologías involucradas en el Web, aunque hay que ser consciente de lo vano del intento, ya que las posibilidades son grandes, la evolución en este tema es constante y el riesgo de quedarse obsoleto muy grande.

Antes de entrar en detalle, presentaremos las características del World Wide Web y del protocolo que lo sustenta, el HTTP.



El desarrollo de aplicaciones para dispositivos móviles es un área de la programación Web con una creciente demanda.
 
El surgimiento de distintos estándares, principalmente HTML5, facilita el desarrollo de aplicaciones multiplataforma y asegura una portabilidad más allá de los distintos dispositivos actuales y futuros.
El conocimiento existente de los desarrolladores Web, a través del uso de herramientas como PhoneGap, permite ampliar su campo de acción profesional, permitiendo acceder a la creación de aplicaciones que se ejecutan de la misma forma que las nativas, sin necesidad de estudiar nuevos lenguajes ni preocuparse por implementos puntuales.


Destinatarios


1. Webmasters, programadores Web, diseñadores, ingenieros y analistas en sistemas.
2. Emprendedores de proyectos de nuevas tecnologías.
3. Público en general que desee introducirse al segmento Web mobile.Resultado de imagen de introduccion a los sistemas y aplicaciones web


                                              REFERENCIAS

1. http://www.sceu.frba.utn.edu.ar/e-learning/cursos-online/Informatica-y-Sistemas/Introduccion-al-desarrollo-de-aplicaciones-para-moviles-%28smartphones-y-tablets%29/temario.html

2. http://www.infor.uva.es/~jvegas/cursos/buendia/pordocente/node11.html




lunes, 25 de mayo de 2015

Aspectos Basicos de la Seguridad en Aplicaciones Web

Introducción a la Seguridad en Sistemas Web

Un efecto secundario del crecimiento exponencial que ha tenido el Internet es la privacidad de información tanto personal como profesional. En Internet encontramos funcionando a tiendas en línea, negocios que mueven grandes cantidades de dinero, redes de los servicios que habilitan el comercio a nivel internacional así como sitios de redes sociales que contienen información muy delicada de la vida privada de sus miembros. Desde muchos puntos de vista, podemos creer sin dudar que el punto más crítico de la seguridad del Internet, lo tienen las piezas que intervienen de forma directa con las masas de usuarios, los servidores web.
Problemas Principales en la Programación de Sistemas Web
Una gran parte de los problemas de seguridad en las aplicaciones web son causados por la falta de seguimiento por parte del programador en los siguientes aspectos:
  • Entradas al sistema
  • Salidas del sistema
Quizás uno de los consejos de seguridad en PHP más conocido en cualquier foro de Internet es el uso del parámetro register_globals que es considerado a priori por muchos administradores como un defecto en la configuración y muy probablemente sin entender con cabalidad que es lo que implica esta configuración. El tener habilitado este parámetro oculta el origen de los datos. Si se encuentra habilitado, no podemos saber como es que una variable entró al sistema (si lo hizo por medio de una petición GET o POST por ejemplo) y contribuye a la pérdida del control por parte del programador sobre los procesos a los que se ha sometido cada variable para librarla de riesgos potenciales para la aplicación.

Practicas básicas de Seguridad Web

2.1 Balancear Riesgo y Usabilidad
Si bien la usabilidad y la seguridad en una aplicación web no son necesariamente mutuamente excluyentes, algunas medidas tomadas para incrementar la seguridad con frecuencia afectan la usabilidad. Al igual que debemos pensar en las maneras en que usuarios ilegítimos nos pueden atacar, también debemos considerar la facilidad de uso para los usuarios legítimos.
La recomendación inicial sería tratar de usar medidas de seguridad que sean transparentes a los usuarios. Por ejemplo, la solicitud de un nombre de usuario y una contraseña para registrarse en un sistema son procedimientos esperados y lógicos por parte del usuario.
2.2 Rastrear el Paso de los Datos
La medida más importante como desarrollador preocupado por la seguridad que podemos tomar es mantener conocimiento de los pasos que ha recorrido la información en todo momento. Conocer de donde vinieron los datos y hacia donde van. En muchas ocasiones lograr esto puede ser complicado, especialmente sin un conocimiento profundo de como funcionan los sistemas Web.
En las aplicaciones web, existen maneras de distinguir los orígenes de los datos y poder así reconocer cuando los datos pueden ser dignos de confianza y cuando no. Ante todo, debemos recordar que la desesperación y la paranoia con mucha frecuencia nos dirigen a complicaciones y errores.
2.3 Filtrar Entradas
El filtrado es una de las piedras angulares de la seguridad en aplicaciones web. Es el proceso por el cual se prueba la validez de los datos. Si nos aseguramos que los datos son filtrados apropiadamente al entrar, podemos eliminar el riesgo de que datos contaminados y que reciben confianza indebida sean usados para provocar funcionamientos no deseados en la aplicación.
El proceso de filtrado debe estar conformado por los siguientes pasos:
  • Identificar la entrada.
  • Filtrado de la entrada.
  • Distinguir entre datos que ya han pasado por el filtro y los que no.
Por lo general, se considera más seguro tratar a los datos provenientes de bases de datos como entradas, aunque supuestamente sean bases seguras y en las que debiéramos tener confianza, esto se debe a que es mejor tener.
2.4 Escapar Salidas
Otra piedra angular de la seguridad en aplicaciones web es el proceso de escapado y su contraparte para codificar o decodificar caracteres especiales de tal forma que su significado original sea preservado.
El proceso de escapado debe estar compuesto a su vez por los siguientes pasos:
Identificar las salidas. Escapar las salidas. Distinguir entre datos escapados y noescapados.
Para escapar las salidas, primero debemos identificarlas. En PHP una forma de identificar salidas hacia el cliente es buscar por líneas como:
echo
print
printf
<?=
Además debemos considerar otro tipo de salidas como los datos que son enviados a otros sistemas como bases de datos, etc. El proceso de escapado debe adecuarse al tipo de salida de que se trate (si es al cliente, a la base de datos, etc.). Para la mayoría de los destinatarios, existen funciones nativas en PHP para esta finalidad.
3.1 Ataques URL de Tipo Semántico
Este tipo de ataques involucran a un usuario modificando la URL a modo de descubrir acciones a realizar originalmente no planeadas para él. Los parámetros que son enviados directamente desde la URL son enviados con el método GET y aunque los parámetros que son enviados con este método sólo son un poco más fáciles de modificar que los enviados en forma oculta al usuario en el navegador, esta exposición adicional de los parámetros tiene consecuencias, como cuando queda registrada la URL con todo y estos parámetros quizás privados en buscadores como Google.
3.2 Ataques al Subir Archivos
Existen algunos ataques que aprovechan la posibilidad de la aplicación de subir archivos al servidor. Estos ataques funcionan de la siguiente manera:
Generalmente PHP almacena los archivos subidos en un carpeta temporal, sin embargo es común en las aplicaciones cambiar la localización del archivo subido a una carpeta permanente y leerlo en la memoria. Al hacer este tipo de procedimientos debemos revisar el parámetro que hará referencia al nombre del archivo, ya que puede ser truqueado a modo de apuntar a archivos de configuración del sistema (como /etc/passwd en sistemas Unix).
3.3 Ataques de Cross-Site Scripting
XSS es un tipo de vulnerabilidad de seguridad informática típicamente encontrada en aplicaciones web que permiten la inyección de código por usuarios maliciosos en páginas web vistas por otros usuarios.
Los atacantes típicamente se valen de código HTML y de scripts ejecutados en el cliente.
Una vulnerabilidad de este tipo puede ser usada por los atacantes para burlar los controles de acceso comunes, como la muy conocida Same Origin Policy. Recientemente este tipo de ataques han sido explotados para crear poderosos ataques de phishing y de abusos en el navegador.
Desde la liberación del lenguaje JavaScript, se previeron los riesgos de permitir a un servidor Web enviar código ejecutable al navegador. Un problema se presenta cuando los usuarios tienen abiertos varias ventanas de navegador, en algunos casos un script de una página podría acceder datos en otra página u objeto, observando el peligro de que un sitio malicioso intentara acceder datos sensibles de esta forma.

Seguridad de las Aplicaciones y su Relación con las Bases de Datos



La mayoría de las aplicaciones web son usadas como un conducto entre muchas fuentes de datos y el usuario, esto es, las aplicaciones web son usadas frecuentemente para interactuar con una base de datos. Aunque el tema de la seguridad en las bases de datos merece un tratamiento diferente al de las aplicaciones web, se encuentran íntimamente relacionados. Como hemos mencionado en secciones anteriores, toda entrada al sistema debe ser filtrada, y toda salida escapada. Lo mismo aplica cuando las entradas o salidas son de o hacia una base de datos. Muchos programadores no dan importancia al filtrado de datos provenientes de una consulta a la base de datos, debido a que consideran a esta fuente como confiable. Aunque el riesgo a primera vista parecería menor, es una práctica recomendable no confiar en la seguridad de la base de datos e implementar la seguridad a fondo y con redundancia. Si algún dato malicioso pudiera haber sido inyectado a la base de datos, nuestra lógica de filtrado puede percatarse de ello, pero sólo si se ha implementado este mecanismo.


Fuente... http://www.seguridad.unam.mx/documento/?id=17

PLATAFORMAS WEB: LAMP, WISA Y TODO LO DEMÁS

¿Que es una plataforma web?

Una plataforma web es el entorno de desarrollo de software empleado para diseñar y ejecutar un sitio web y más específicamente un sitio web dinámico, motorizado por una o más bases de datos y/o provisto de interacción a través del uso de lenguajes interpretados.

En términos generales, una plataforma web consta de cuatro componentes básicos:

  • El sistema operativo bajo el cual opera el equipo donde se hospedan las páginas web y que representa la base misma del funcionamiento del computador. En ocasiones limita la escogencia de otros componentes, que pueden o no estar disponibles para correr junto con él.                                                                             
  • El servidor web es el software que maneja las peticiones desde equipos remotos a través de la Internet. En el caso de páginas estáticas, el servidor web simplemente provee el archivo solicitado, el cual se muestra en el navegador. En el caso de sitios dinámicos, el servidor web se encarga de pasar las solicitudes a otros programas que puedan manejar las adecuadamente                                         
  • El sistema manejador de bases de datos se encarga de almacenar sistemáticamente un conjunto de registros de datos relacionados para ser usados posteriormente. Una base de datos puede guardar, por ejemplo, los datos de un usuario, sus preferencias y permisos de acceso, datos estadísticos sobre un asunto, noticias, artículos, entre muchas otras cosas      
                                                                   
  • Por último, un lenguaje de programación interpretado que controla las aplicaciones de software que corren en el sitio web.

Los sistemas de información que formen parte del sitio web funcionan por medio de una arquitectura cliente-servidor, la cual emplea el software antes mencionado para que las consultas de los usuarios sean procesadas y las páginas web se muestren correctamente.

Los datos son accedidos a través de un navegador web, que en este caso constituye el cliente del sistema. Siendo así, una aplicación web puede estar desarrollada bajo cierta plataforma y aun así trabajar en computadores que tengan instalados diferentes sistemas operativos como Windows, Linux, MacOS o Solaris.

La forma de interacción entre el sistema y el usuario es la navegación a través del sitio web y el empleo de elementos de la interfaz gráfica inherentes a él: textos, imágenes, animaciones, hipervínculos y formularios.

Principales plataformas web

Diferentes combinaciones de los cuatro componentes señalados, basadas en las distintas opciones de software disponibles en el mercado, dan lugar a numerosas plataformas web, aunque hay dos que sobresalen del resto por su popularidad y difusión: LAMP y WISA. De acuerdo con la encuesta de servidores web que lleva a cabo Netcraft mensualmente, para Abril de 2008 aproximadamente el 85% de los servidores funcionaba con Apache (50.42%) o IIS (35.46%). Esto nos da una idea bastante acertada del resto de los componentes, puesto que IIS solo corre bajo Windows y Apache y IIS no pueden funcionar a la vez (leer más abajo sobre plataforma WAMP).

La plataforma LAMP trabaja enteramente con componentes de software libre y no están sujetas a restricciones propietarias. El nombre LAMP surge de las iniciales de los componentes de software que la integran: Linux (sistema operativo), Apache (servidor web), MySQL (manejador de bases de datos) y PHP (lenguaje interpretado, aunque a veces se sustituye por Perl o Python)




La plataforma WISA por su lado está basada en tecnologías desarrolladas por la compañía Microsoft. Sus componentes son Windows (sistema operativo), Internet Information Services (servidor web), SQL Server (manejador de bases de datos) y ASP (no es un lenguaje interpretado per se, sino que sirve como un medio para trabajar con otro que sí lo es, como Visual Basic, bajo un entorno web).

¿LAMP o WISA?

LAMP, por funcionar bajo un esquema de código abierto, es de bajo costo. Es una plataforma bastante rápida y ofrece buen rendimiento sobre todo a aplicaciones web que no sean demasiado grandes o que tenga excesiva actividad. Además existe para ella una amplia gama de aplicaciones, perfectamente adaptable a las necesidades de pequeñas y medianas empresas o de aquellas que se encuentren en los primeros estadios de la gestión de información, que incluyen blogs, manejadores de contenidos, aplicaciones para trabajo en grupo, entre otras. Algunas de estas aplicaciones son pagas pero la mayoría son gratuitas.
WISA, es más costosa y provee mayor nivel de soporte. En general es más robusta si se tiene en mente aplicaciones web que funcionen en una intranet o que tengan un gran nivel de actividad (varios miles de transacciones electrónicas al día, por ejemplo). También existe abundancia de aplicaciones web desarrolladas por terceros, aunque la mayoría de ellas son pagas.

¿Qué otras plataformas existen?

El servidor Apache también puede correr bajo otros sistemas operativos aparte de Unix. La configuración Windows-Apache-mySQL-PHP se conoce como WAMP es bastante común pero sólo como ambiente de desarrollo local: Los programadores hacen pruebas con sistemas web desde su computadora y luego cargan sus archivos en la cuenta de hospedaje. Sin embargo, sería muy raro conseguir un proveedor de hosting cuyos servidores trabajen bajo plataforma LAMP.

De forma similar, un servidor Windows puede correr con mySQL y PHP. A este caso se le conoce como plataforma WIMP.

Existen muchas otras plataformas que trabajan con otros sistemas operativo empleado (Unix, MacOS, Solaris), servidores web (incluyendo algunos que se han cobrado relativa popularidad como Lighttpd y LiteSpeed), bases de datos (Postgre SQL) y lenguajes de programación.


Beneficios de implementar aplicaciones online en su sitio web


Hoy día los usuarios buscan más que información en un sitio web. Desean tener sistemas a su disposición para satisfacer rápidamente y en cualquier momento alguna necesidad especifica. Por otra parte muchas empresas obtienen grandes beneficios proveyendo estas soluciones a sus clientes y usuarios consiguiendo reducir costos, aumentar ventas, mejorar la imagen de la empresa, conservar clientes, etc. Piense en la comodidad y utilidad que ofrecen aplicaciones web como las de Home Banking.

Algunas aplicaciones que puede incluir en su sitio web:

§ Comercio electrónico

§ Presupuestos interactivos

§ Consultas de disponibilidad de productos

§ Seguimiento online de operaciones

§ Consulta de estados de cuenta

§ Recepción online de pedidos

§ Envío masivo de información

§ Sistema de soporte

§ Encuestas

§ Sistemas de búsqueda de información

§ Webmail


Beneficios de implementar aplicaciones web en su organización


Son innumerables los beneficios que se pueden obtener implementando una aplicación web en la intranet (o extranet) de su organización. Algunas funcionalidades comunes:

§ Capturar datos, generar informes y facilitar consultas para aumentar la productividad de las diversas áreas de la organización.

§ Divulgar información de la compañía con efectividad, consiguiendo que todas las partes implicadas estén permanentemente informados con las últimas novedades y datos de la organización.

§ Facilitar el almacenamiento y consulta de documentos.

§ Compartir de forma segura parte de la información u operatoria propia de una organización con proveedores, compradores, socios, clientes o cualquier otro negocio u organización.

Sistema web

Características de un Sistema Web
Principales características y ventajas de un software web enable:
  • Características:
    Acceso desde cualquier ubicación con conexión a Internet
    Utilización en redes internas
    Seguridad basada en usuarios y roles de acceso
    Disponibilidad 24 hs
    Información actualizada constantemente
    Multi-usuario
    Multi-idioma 
  • Ventajas:
    Independencia de la Plataforma (Windows, Linux, Mac, etc)
    Acceso a través de internet Rápido, distribuido, escalable
    Tecnologías open source sin costos de licencia 
  • Desventajas:
    Depende de la conexión a internet
    Requerimientos de hardware intermedios

CARACTERÍSTICAS DE APLICACIONES WEB

Compatibilidad multiplataforma
una misma versión de la aplicación puede correr sin problemas en múltiples plataformas como Windows, Linux, Mac, etc.

Actualización
las aplicaciones web siempre se mantienen actualizadas y no requieren que el usuario deba descargar actualizaciones y realizar tareas de instalación.

Acceso inmediato y desde cualquier lugar:
las aplicaciones basadas en tecnologías web no necesitan ser descargadas, instaladas y configuradas. Además pueden ser accedidas desde cualquier computadora conectada a la red desde donde se accede a la aplicación.

Menos requerimientos de hardware
Este tipo de aplicación no consume (o consume muy poco) espacio en disco y también es mínimo el consumo de memoria RAM en comparación con los programas instalados localmente. Tampoco es necesario disponer de computadoras con poderosos procesadores ya que la mayor parte del trabajo se realiza en el servidor en donde reside la aplicación.

Menos Bugs (errores)
son menos propensas a crear problemas técnicos debido a problemas de software y conflictos de hardware. Otra razón es que con aplicaciones basadas en web todos utilizan la misma versión, y los bugs (errores) pueden ser corregidos tan pronto como son descubiertos beneficiando inmediatamente a todos los usuarios de la aplicación.

Seguridad en los datos
Los datos se alojan en servidores con sistemas de almacenamiento altamente fiables y se ven libres de problemas que comúnmente sufren los ordenadores de usuarios comunes como virus y/o fallas de disco duro.