miércoles, 10 de junio de 2015

Herramientas de Desarrollo Web


TECNOLOGÍAS EMERGENTES
 
Son definidas como innovaciones científicas que pueden crear una nueva industria o transformar una existente. Cada una de estas tecnologías ofrece un amplio campo de oportunidades lo que proporciona la motivación para hacer inversiones de  riesgo, el problema que plantean estas nuevas tecnologías a las empresas o directivos de las mismas es que puede dar o no resultado. Las tecnologías emergentes surgen a que debido las herramientas de gestión tradicional no son capaces de resolver con éxito los nuevos desafíos.

En el desarrollo web tenemos unas herramientas para el diseño, otras para la maquetación, otras para la programación, y para la depuración. Todas las herramientas que usemos son muy importantes, desde el Sistema Operativo hasta el comando más insignificante, y por ello que debemos elegir la más adecuada a nuestras necesidades y capacidades.

Sistema Operativo

Para desarrollar una web, lo primero que necesitamos es un Sistema Operativo, como es lógico, y su elección no es tan trivial. Hay que tener en cuenta las aplicaciones de las que dispone el Sistema Operativo y sus costes. Por ejemplo, tenemos Microsoft Windows, cuyas aplicaciones son muy caras, como Photoshop, Dreamweaver, Fireworks, ASP .NET… Y por otro lado tenemos GNU/Linux, con GIMP, Inkscape, Amaya, Aptana, PHP (aunque todos ellos también están disponibles en Windows.

Otra característica a tener en cuenta es las facilidades que el Sistema Operativo aporta al desarrollador, y en este sentido GNU/Linux se lleva de calle a Windows. Y esto es porque Windows no fue diseñado para los desarrolladores, sino para personas que no tienen muchos conocimientos sobre informática.

Y por el contrario GNU/Linux fue creado por desarrolladores, y para desarrolladores; y por lo tanto en GNU/Linux podemos encontrar infinidad de herramientas que nos harán la vida mucho más fácil, la ventaja de esto es que son libres.

Fases de desarrollo de una web

Para elegir las herramientas a utilizar, antes debemos identificar las fases del proceso que forman el ciclo de vida de un desarrollo web.

  • Diseño: El diseño consiste en crear esbozos de la web final mediante una herramienta gráfica, como Photoshop, GIMP o Inkscape.
  • Maquetación HTML/CSS: La maquetación consiste en convertir los esbozos creados en la fase anterior en plantillas HTML, su respectiva hoja de estilos, y las imágenes usadas. Es posible saltarse la fase anterior para comenzar directamente con esta fase, dependiendo de si dominamos herramientas como Photoshop o no.
  • Programación cliente: La programación cliente consiste básicamente en Javascript. Una web puede no tener necesidad de hacer programación cliente, como puede ser una pequeña web corporativa con poca información estática, o puede que requiera enormes esfuerzos en esta fase, como ocurre con los proyectos Web 2.0.
  • Programación servidor: En esta fase, que se desarrolla junto con la anterior, crearemos la aplicación web en un lenguaje de servidor, como puede ser PHP, ASP .NET, Python, Perl, etc.
  • Depuración: Esta fase enlaza la anterior con la siguiente, y es donde haremos las pruebas unitarias, aserciones, trazas, etc.
  • Pruebas en local: En nuestro servidor local haremos todas las pruebas posibles.
  • Subir ficheros al hosting: Una vez nuestra web esté completada y bien testeada en nuestro servidor local (desarrollo), la subiremos al servidor del hosting elegido (producción). Dependiendo del hosting, podremos usar FTP, SFTP (SSH), WebDAV, o incluso Subversión. Yo aconsejo usar Subversión si así lo permite el servidor, por su comodidad y rapidez, además de por su principal utilidad, que es la de control de versiones.
  • Pruebas en hosting: Realizaremos las últimas pruebas en el servidor del hosting para comprobar que el cambio de servidor no ha afectado a nada. Para evitar problemas, nuestro servidor local debe tener exactamente la misma configuración que el servidor del hosting.

Herramientas de desarrollo web más utilizadas

Las fases de un desarrollo web, así como los lenguajes de programación usados, son muy extensos y variados, y por ello se necesitan herramientas específicas para cada una de ellas.

En el desarrollo web existen herramientas para el diseño, otras para la maquetación, otras para la programación, y para la depuración. Todas las herramientas son muy importantes, desde el Sistema Operativo hasta el comando más insignificante, y por ello se debe elegir la más adecuada según las necesidades y capacidades.

 

Frameworks de desarrollo

Un Framework es un concepto sumamente genérico, se refiere a “ambiente de trabajo”, por ejemplo .NET es considerado un framework para desarrollar aplicaciones sobre Windows. En general los frameworks son soluciones completas que contemplan herramientas de apoyo a la construcción (ambiente de trabajo o desarrollo) y motores de ejecución (ambiente de ejecución). Framework se refiere a una estructura de software de componentes personalizables e intercambiables para el desarrollo de una aplicación.

Es una aplicación genérica incompleta y configurable a  la que se pueden añadir las últimas piezas para construir una aplicación concreta.

Objetivos de un Framework

·          Desarrollo rápido.

·          Desarrollo estructurado.

·          Reutilización de código.

·          Disminución del esfuerzo en el desarrollo.

·          Aprovechar las funcionalidades ya implementadas.

·         Concentrarse directamente en la solución del problema.

Algunos ejemplos de Framework son:

§  Para Java:

·         Struts

·         Java Server Faces.

·         Spring.

§  Para HTML y CSS:

·         HTML5 Boilerplate.

·         Blueprint.

·         960 Grid System.

·         Bluetrip.

·         YAML.

·         Inuit.

 

Tecnología AJAX

El término AJAX es un acrónimo de Asynchronous JavaScript + XML, que se puede traducir como "JavaScript asíncrono + XML".

“Ajax no es una tecnología en sí mismo. En realidad, se trata de varias tecnologías independientes que se unen de formas nuevas y sorprendentes.”

Las tecnologías que forman AJAX son:

·         XHTML   y CSS, para crear una presentación basada en estándares.

·         DOM,  para la interacción y manipulación dinámica de la presentación.

·         XML,  XSLT y JSON, para el intercambio y la manipulación de información.

·         XMLHttpRequest,  para el intercambio asíncrono de información.

·         JavaScript,  para unir todas las demás tecnologías.

Desarrollar aplicaciones AJAX requiere un conocimiento avanzado de todas y cada una de las tecnologías anteriores. En las aplicaciones web tradicionales, las acciones del usuario en la página desencadenan llamadas al servidor. Una vez procesada la petición del usuario, el servidor devuelve una nueva página HTML al navegador del usuario.
 
 

 En la figura se puede visualizar una comparación gráfica del modelo tradicional de aplicación web y del nuevo modelo propuesto por AJAX.

Esta técnica tradicional para crear aplicaciones web funciona correctamente, pero no crea una buena sensación al usuario. Al realizar peticiones continuas al servidor, el usuario debe esperar a que se recargue la página con los cambios solicitados. Si la aplicación debe realizar peticiones continuas, su uso se convierte en algo molesto.

AJAX permite mejorar completamente la interacción del usuario con la aplicación, evitando las recargas constantes de la página, ya que el intercambio de información con el servidor se produce en un segundo plano. Las aplicaciones construidas con AJAX eliminan la recarga constante de páginas mediante la creación de un elemento intermedio entre el usuario y el servidor. La nueva capa intermedia de AJAX mejora la respuesta de la aplicación, ya que el usuario nunca se encuentra con una ventana del navegador vacía esperando la respuesta del servidor.

Utilización de librerías

Los las librerías y los Framework específicos para el desarrollo de aplicaciones con JavaScript han surgido por dos razones:

En primer lugar, porque las aplicaciones comerciales deben funcionar correctamente e igual de bien en al menos cinco navegadores diferentes: Internet Explorer 6 y 7, Firefox, Opera y Safari.

En segundo lugar, el tiempo disponible para el desarrollo de cada nueva característica se reduce cada vez más por la necesidad continua de incluir novedades en las aplicaciones antes de que las incluya la competencia.

Algunas librerías son:

·         PROTOTYPE. Facilita el desarrollo de aplicaciones web con JavaScript y AJAX. Su autor original es Sam Stephenson, las últimas versiones incorporan código e ideas de muchos otros programadores. Es la base de muchos otros Frameworks y librerías.

·         SCRIPTACULOUS. Es una de las muchas librerías que han surgido para facilitar el desarrollo de aplicaciones. Su autor es Thomas Fuchs.

 La librería está dividida en varios módulos:

§  Efectos: Permite añadir efectos especiales a cualquier elemento de la página.

§  Controles: Define varios controles que se pueden añadir directamente a cualquier aplicación web. Los tres controles que forman este módulo son: arrastrar y soltar, autocompletar y editor de contenidos.

§  Utilidades: La utilidad principal que incluye se llama builder, que se utiliza para crear fácilmente nodos y fragmentos complejos de DOM.

·         JQUERY. Su autor original es John Resig, recibe contribuciones de decenas de programadores. Su diseño interno tiene diferencias drásticas respecto a Prototype.

Herramientas: desarrollo en PHP

Las herramientas básicas para el desarrollo de una web en PHP, en sus diferentes fases de diseño e implementación.

Fases: diseño y maquetación

  • Adobe Photoshop: Esta aplicación sólo está disponible en Windows, y es el más caro, aunque es el más usado y gracias a ello dispone de una gran comunidad de usuarios con los que poder contar ante cualquier problema. Con él crearemos el diseño, así como las imágenes que usemos en la maquetación.
  • GIMP: Es el equivalente de software libre más próximo a Photoshop. Al ser libre es posible conseguirlo gratuitamente, y de hecho cualquier distribución GNU/Linux lo incluye. Al igual que en Photoshop, con él podremos crear el diseño y las imágenes de la maquetación HTML. También disponible en Windows

Fase: maquetación

  • Inkscape: El equivalente en Windows es Adobe Fireworks. Es un excelente editor gráfico vectorial con el que poder crear iconos, banners, y demás dibujos de forma muy fácil y sencilla, incluso para aquellos que no tengan demasiados conocimientos en edición gráfica digital.
  • Adobe Fireworks: El editor de gráficos vectoriales más fácil de usar que he tenido la oportunidad de usar, aunque no lo eché de menos cuando descubrí Inkscape. Al igual que su compañero Photoshop es muy caro, y más aún si tenemos una gran alternativa gratuita como es Inkscape.

Fases: maquetación, programación cliente

  • Dreamweaver, Aptana, Amaya: Con ellos crearemos el código HTML/CSS (maquetación), siendo Aptada la opción más profesional para la programación cliente (Javascript).

 

Fase: programación servidor

  • Zend Studio: Sin duda el mejor IDE existente en el mercado para desarrollo web con PHP. Es comercial, aunque no demasiado caro teniendo en cuenta la excelente herramienta que es. Además es posible descargarlo desde la web de Zend para probarlo durante 30 días. Con él crearemos fácilmente la aplicación web en PHP. Aunque podremos usar igualmente cualquier editor. Una muy buena alternativa es Eclipse con el plugin PHP. Otra aplicación muy útil que está muy ligada a Zend Studio es Zend Platform, un módulo para Apache que permite depurar una web directamente en el navegador (Internet Explorer o Firefox), además de otras funciones más complejas, como alertas configurables para que nos envíe un email por cada error ocurrido en la web, o cuando un script sobrepase un tiempo determinado de ejecución, por ejemplo.

Fase: prueba local

  • Apache Instalar un servidor web Apache en la máquina donde desarrollamos es fundamental. De esta manera haremos pruebas rápidamente: editamos un fichero PHP, vamos al navegador, actualizamos, y vemos los cambios.

Fases: pruebas en local, depuración

  • Firefox / Firebug / Web Developer Extensión: Firefox es sin duda la mejor herramienta creada en los últimos tiempos para los desarrolladores web, y con Firefox sus dos extensiones más útiles para nuestra profesión: Firebug y Web Developer.

Con Firebug podremos depurar Javascript, editar HTML y CSS en la misma página para ver los cambios en tiempo real, consultar los tiempos de carga de la página en conjunto, de las imágenes, javascripts, hojas de estilo, así como sus tamaños, etc. Y Web Developer nos ofrece herramientas muy útiles como ver las cookies de la web, ocultar imágenes, cambiar el tamaño del navegador a resoluciones estándar, etc.

Subir ficheros al servidor del hosting

Una vez concluido todas las fases y nuestro proyecto esté listo, deberemos subirlo al servidor del hosting.

La herramienta a utilizar dependerá de las opciones que nos ofrezca el hosting, que desgraciadamente en la mayoría de los casos es solamente el antiguo FTP. En Dreamweaver y Zend Studio tenemos un cliente FTP y SFTP (SSH), y la tarea consistirá simplemente en configurar el FTP y copiar y pegar los directorios que queramos subir.
 

jueves, 28 de mayo de 2015

METODOS DE SEGURIDAD EN LA WEB

SEGURIDAD EN LA WEB

 
La seguridad es un elemento de primer nivel que entra en juego desde la concepción inicial de un sistema y participa desde un principio en las decisiones de diseño. Los requisitos de seguridad deben considerarse explícitamente durante todo el proceso de desarrollo, lo que da lugar a la inclusión de fases o actividades dedicadas a la seguridad. 
ELEMENTOS DE SEGURIDAD EN LA WEB.
La red mundial Internet y sus elementos asociados son mecanismos ágiles que proveen una alta gama de posibilidades de comunicación, interacción y entretenimiento, tales como elementos de multimedia, foros, chat, correo, comunidades, bibliotecas virtuales entre otros que pueden ser accedidos por todo tipo de público. Sin embargo estos elementos deben contener mecanismos que protejan y reduzcan los riesgos de seguridad alojados, distribuidos y potencializados a través del mismo servicio de Internet.
  • Confidencialidad: Se refiere a que la información solo puede ser conocida por individuos autorizados
  •  Integridad: Se refiere a la seguridad de que una información no ha sido alterada, borrada, reordenada, copiada, etc., bien durante el proceso de transmisión o en su propio equipo de origen.
  •   Disponibilidad: Se refiere a que la información pueda ser recuperada o esté disponible en el momento que se necesite.
  • Seguridad de la Información: Son aquellas acciones que están encaminadas al establecimiento de directrices que permitan alcanzar la confidencialidad, integridad y disponibilidad de la información, así como la continuidad de las operaciones ante un evento que las interrumpa.
    •  Activo: Recursos con los que cuenta la empresa y que tiene valor, pueden ser tangibles o intangibles.
    • Vulnerabilidad: Exposición a un riesgo, fallo o hueco de seguridad detectado en algún programa o sistema informático.
    • Amenaza: Cualquier situación o evento posible con potencial de daño, que pueda presentarse en un sistema.
    • Riesgo: Es un hecho potencial, que en el evento de ocurrir puede impactar negativamente la seguridad, los costos, la programación o el alcance de un proceso de  negocio o de un proyecto.
    • Correo electrónico: El correo electrónico es un servicio de red que permite que los usuarios envíen y reciban mensajes incluyendo textos, imágenes, videos, audio, programas, etc., mediante sistemas de comunicación electrónicos.
 
AMENAZAS TÉCNICAS DE SEGURIDAD.
§  Spam: Envío de cualquier correo electrónico, masivo o no, a personas a través de este medio que incluyen temas tales como pornografía, bromas, publicidad, venta de productos, entre otros, los cuales no han sido solicitados por el destinatario.
§  Ingeniería social: Es la manipulación de las personas para convencerlas de que ejecuten acciones, actos o divulguen información que normalmente no realizan, entregando al atacante la información necesaria para superar las barreras de seguridad.
§  Código Malicioso: HW, SW o firmware que es intencionalmente introducido en un sistema con un fin malicioso o no autorizado.
§  Hoax: Es un mensaje de correo electrónico con contenido falso o engañoso y normalmente distribuido en cadena, aparte de ser molesto, congestiona las redes y los servidores de correo, pueden ser intencionales para la obtención de direcciones de correo para posteriormente ser utilizadas como spam. Algunos de los Hoax más conocidos son correos con mensajes sobre virus incurables,  regalos de grandes compañías, entre otros.
§  Suplantación: Hacerse pasar por algo o alguien, técnicamente el atacante se hace pasar por un servicio o correo original.
 
FRAUDES.
·        Phishing: Es la capacidad de duplicar una página Web para hacer creer al visitante que se encuentra en la página original en lugar de la copiada.
·        Se tienen dos variantes de esta amenaza:   Vishing, Smishing
TIP DE SEGURIDAD
Evite visitar páginas no confiables o instalar software de dudosa procedencia.
La mayoría de las aplicaciones peer-to-peer contiene programas espías que se instalan sin usted darse cuenta. Asegúrese que se aplican las actualizaciones en sistemas operativos y navegadores Web de manera regular.
Si sus programas o el trabajo que realiza en su computador no requieren de popup, Java support, ActiveX, Multimedia Autoplay o auto ejecución de programas, deshabilite estos. Si así lo requiere, obtenga y configure el firewall personal, esto reducirá el riesgo de exposición.
  1. Correo electrónico:
    • No publique su cuenta de correo en sitios no confiables
    • No preste su cuenta de correo ya que cualquier acción será su responsabilidad.
    •  No divulgue información confidencial o personal a través del correo.
  2. Control de Spam y Hoax:
    • No reenvié los correos cadenas, esto evita congestiones en las redes y el correo, además el robo de información contenidos en los encabezados.
  3. Control de la Ingeniería social:
    • No divulgue información confidencial suya o de las personas que lo rodean.
    • No hable con personas extrañas de asuntos laborales o personales que puedan comprometer información.
  4. Control de phishing y sus modalidades:
    • Si un usuario recibe un correo, llamada o mensaje de texto con una advertencia sobre su cuenta bancaria, no debe contestarlo.
  5. Robo de contraseñas:
    •  Cambie sus contraseñas frecuentemente, mínimo cada 30 días.
    • Use contraseñas fuertes: Fácil de recordar y difícil de adivinar.
    • No envié información de claves a través del correo u otro medio que no esté encriptado. 
MECANISMOS DE SEGURIDAD
MEDIA COMMERCE cuenta con sistema de autenticación y autorización para controlar el acceso a los diferentes servicios de la red, al igual que controles de autenticación para los usuarios (equipos terminales de acceso del cliente).
MEDIA COMMERCE cuenta con diferentes protecciones para controlar el acceso a los servicios de Internet tales como los mecanismos de identificación y autorización respecto a los servicios. Para proteger las plataformas de los servicios de Internet, MEDIA COMMERCE ha implementado configuraciones de seguridad base en los diferentes equipos de red, lo que comúnmente se llama líneas base de seguridad, además del establecimiento de medidas de seguridad a través de elementos de control y protección como:
·        Firewall: A través de éste elemento de red se hace la primera protección perimetral en las redes de MEDIA COMMERCE y sus clientes, creando el primer control que reduce el nivel de impacto ante los riesgos de seguridad.
·        Antivirus: Tanto las estaciones de trabajo como los servidores de procesamiento interno de información en MEDIA COMMERCE son protegidos a través de sistemas anti códigos maliciosos.
·        Antispam: Todos los servidores de correo poseen antispam que reduce el nivel de correo basura o no solicitado hacia los clientes, descongestionando los buzones y el tráfico en la red.
·        Filtrado de URLs: Los clientes pueden realizar filtrado de URL a través de sus navegadores Web, se sugiere instalar además sistemas parentales. MEDIA COMMERCE cuenta con varios mecanismos capaces de realizar el bloqueo de URLs, entre ellos se encuentran los sistemas DNS y una herramienta para todo el tráfico hacia Internet, el objetivo principal de bloquear las que contengan o promuevan la pornografía infantil en Internet a través imágenes, textos, documentos y/o archivos audiovisuales.
Seguridad a nivel del CPE: Los dispositivos de conexión final ubicados en las premisas de los clientes cuentan con elementos bases para la autenticación y autorización, con ello permiten hacer una conexión a Internet de manera más segura.
 
DISEÑO DE POLÍTICAS DE SEGURIDAD
Se dice que un sistema es confiable con respecto a una determina política de seguridad si ofrecen mecanismos de protección capases de cumplir con los requisitos de seguridad impuestos por dicha política.
La experiencia en el desarrollo de mecanismos de seguridad relacionado con el control de acceso a dado lugar a los siguientes criterios de diseño:                     
§  Abstracción de datos.
§  Privilegios mínimos.
§  Separación de privilegios.
§  Separación de administración y acceso.
§  Autorizaciones positivas y negativas.
§  Delegación de privilegios.
 
MODELOS DE SEGURIDAD
MAC es un sistema centralizado, en el cual las decisiones de seguridad no recaen en el propietario de un objeto y es el sistema el que fuerza el cumplimiento de las políticas por encima de las decisiones de los sujetos, además de permitir una granularidad y control mayores. Desde el punto de vista de la seguridad, MAC es más completo que DACESTÁNDAR MAC
Es una forma de acceso a recursos basada en los propietarios y grupos a los que pertenece un objeto. Se dice que es discrecional en el sentido de que un sujeto puede transmitir sus permisos a otro sujeto. La mayoría de sistemas Linux ahora mismo usan este tipo de acceso, estando los permisos orquestados por grupos y usuarios, pudiendo un usuario normal cambiar los permisos de los archivos que posee con el comando chmod.
ESTÁNDAR DAC
Trata de definir los permisos basándose en los roles establecidos en la organización, para luego asociar adecuadamente a los usuarios con los roles que tengan derecho a ejercer. Se dice que RBAC es neutral con respecto a la política, ya que permite modelar otros modelos previos, que han demostrado limitaciones, como son DAC y MAC.  
ESTÁNDAR RBAC
El modelo de referencia RBAC: describe sus elementos y sus relaciones. Especificaciones funcionales administrativas y del sistema RBAC: define las características requeridas para un sistema RBACESTÁNDAR RBAC.