anteproyecto liliana cujar
TRANSCRIPT
GUÍA DE BUENAS PRÁCTICAS PARA EL DESARROLLO DE APLICACIONES
WEB SEGURAS, ORIENTADAS A LA FORMACIÓN DE PROGRAMADORES
LILIANA CÚJAR BAHAMÓN
CÓDIGO 21404870
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA
ESPECIALIZACIÓN EN SEGURIDAD INFORMÁTICA
MEDELLÍN
2015
GUÍA DE BUENAS PRÁCTICAS PARA EL DESARROLLO DE APLICACIONES
WEB SEGURAS, ORIENTADAS A LA FORMACIÓN DE PROGRAMADORES
LILIANA CÚJAR BAHAMÓN
CÓDIGO 21404870
Proyecto de Grado para optar al título de Especialista en Seguridad Informática
Director de Cuso: Ing. Ramses Ríos Lampriello
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD
ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA
ESPECIALIZACIÓN EN SEGURIDAD INFORMÁTICA
MEDELLÍN
2015
TABLA DE CONTENIDO
Pag.
1. PLANTEAMIENTO DEL PROBLEMA 6
1.1. DESCRIPCIÓN DEL PROBLEMA 6
1.2. FORMULACIÓN DEL PROBLEMA 8
1.3. ALCANCE DEL PROYECTO 8
1.4. JUSTIFICACIÓN 8
1.5. OBJETIVOS 9
1.5.1 OBJETIVO GENERAL 9
1.5.2. OBJETIVOS ESPECÍFICOS 9
2. MARCO REFERENCIAL 10
ANTECEDENTES 10
3. MARCO TEÓRICO CONCEPTUAL 12
3.1. BUENAS PRÁCTICAS PARA EL DESARROLLO DE UN
PROYECTO INFORMÁTICO 13
3.1.1. ¿Qué son buenas prácticas? 13
3.1.2. ¿Por qué se les llaman buenas prácticas? 13
3.1.3. ¿Qué hace que una práctica sea mal desarrollada? 13
3.1.4. Qué es un proyecto informático 14
3.1.5. Tips de buenas prácticas para el desarrollo de un proyecto 14
informático
3.2. LA SEGURIDAD INFORMÁTICA 16
3.2.1. Riesgos que pueden afectar la WEB 17
3.3. QUE ES UNA APLICACIÓN WEB 18
3.3.1. Ciclo de vida en el desarrollo de aplicaciones web 19
3.3.2. Arquitecturas para el desarrollo de aplicaciones web 21
3.4. SEGURIDAD EN EL CICLO DE VIDA DE UNA APLICACIÓN
WEB 22
3.4.1. Que es Criptografía 23
3.4.2. Que uso tiene la Criptografía 25
3.4.3. Que clases de tecnologías existen 25
3.4.4. Servicios criptográficos disponibles 26
3.5. BUENAS PRÁCTICAS DE CODIFICACIÓN – ARQUITECTURA
PARA EL DESARROLLO DE APLICACIONES WEB. 28
3.5.1. Seguridad en la construcción de aplicaciones 29
3.6. TECNOLOGÍA A IMPLEMENTAR - ACUNETIX WEB
VULNERABILITY SCANNER 33
5.61 Que es y para qué sirve ACUNETIX WEB VULNERABILITY
SCANNER 33
3.6.2 ¿Qué detecciones realiza? 34
3.7. CREACION DE UNA PÁGINA WEB PARA EL DESARROLLO
DEL PROYECTO 34
4 DISEÑO METODOLÓGICO 35
4.1. TIPO DE INVESTIGACIÓN 36
4.2. MÉTODO 36
4.3. PRODUCTO O RESULTADO QUE DEBE GENERAR EL
PROYECTO PROPUESTO 36
4.4 ETAPAS DE LA INVESTIGACIÓN 37
5. RECURSOS DISPONIBLES 38
6. CRONOGRAMA 40
7. BIBLIOGRAFÍA 41
LISTA DE TABLAS
Pag.
Tabla 1: Recursos indispensables para el desarrollo del proyecto 21
Tabla 2: Cronograma de actividades 23
7
1. PLANTEAMIENTO DEL PROBLEMA
1.1. DESCRIPCIÓN DEL PROBLEMA
El origen de las vulnerabilidades de una aplicación web puede estar en cualquier
componente de una aplicación web en producción: la base de datos, la
configuración de los servicios, el sistema operativo, los accesos a sistemas o
módulos relacionados, entre otras. Sin embargo, muchas de ellas pueden
prevenirse escribiendo código fuente seguro y protegido contra amenazas
potenciales.
Estudios de seguridad plantean que el 70% de las aplicaciones web tienen
vulnerabilidades, los problemas de seguridad en los sitios web se encuentran a
nivel de la aplicación como resultado de malas prácticas en la construcción del
software, los desarrolladores requieren comprender que al programar aplicaciones
WEB deben considerar requerimientos de seguridad y que se requiere no solo
cumplir con el objetivo funcional básico de la aplicación, sino una concepción
general de los riesgos que puede correr la información contenida, y gestionada por
el sistema.
El concepto de la seguridad en las aplicaciones web es un área de investigación
que ha pasado a ser vital dentro de la Ingeniería de Software, como resultado del
crecimiento de las aplicaciones sobre Internet. Los ataques han ido en aumento
dadas las posibilidades de éxito que han tenido y se puede decir que sin
consecuencia laguna.
Como consecuencia, el desarrollador de software no solo debe concentrarse en
los requerimientos de los usuarios y en la autenticación para el acceso a las
aplicaciones sino en prevenir desde el desarrollo posibles ataques. Esto implica
que en el proceso de diseño y construcción del software se incorporen prácticas
de seguridad como requerimientos críticos del sistema.
Para el proyecto, The Open Web Application Security Project, OWASP (“la
comunidad libre y abierta sobre seguridad en aplicaciones”) es muy importante por
la información alberga acerca del desarrollo de las aplicaciones Web, contiene
información desde el momento de la creación de la página Web, como las
vulnerabilidades, las formas de contrarrestarlas, escaneo, ejemplos y soluciones.
8
1.2. FORMULACIÓN DEL PROBLEMA
¿Cómo introducir buenas prácticas de software seguro en la formación de
programadores de aplicaciones web?
1.3. ALCANCE DEL PROYECTO
Creación de una guía de buenas prácticas de seguridad en Aplicaciones WEB
desde la elaboración de software en su etapa incipiente para que sean adoptadas
por los estudiantes de Media Técnica en Desarrollo del software de las
instituciones educativas del Municipio de Medellín.
1.4. JUSTIFICACIÓN.
En la actualidad, existen publicaciones que permiten formar un criterio sobre el
tema, no existen acuerdos sobre mejores prácticas básicas sobre lo que se debe
considerar en el proceso de desarrollo, la seguridad se centra en la defensa y no
en la prevención por lo que se propone la definición de mejores prácticas como los
primeros pasos durante la formación de programadores para crear hábitos de
construcción de software seguro.
El Vivero del Software es un lugar ubicado en la ciudad de Medellín en donde
germina, se incentiva y se fortalece el talento de los jóvenes estudiantes de Media
Técnica en Desarrollo del software de las instituciones educativas del Municipio de
Medellín. Es aquí donde se revela la necesidad de incluir las buenas prácticas
desde el momento mismo de la concepción de la idea de la creación de una
9
página Web por los estudiantes que comienzan en el mundo del desarrollo del
software.
1.5. OBJETIVOS
1.5.1. Objetivo General
Diseñar una guía de mejores prácticas de seguridad para el desarrollo de
aplicaciones WEB y su incorporación en los procesos de formación de
programadores.
1.6. OBJETIVOS ESPECÍFICOS
Identificar las principales vulnerabilidades en cada fase del ciclo de
desarrollo de software y los posibles ataques mediante la revisión de
literatura y de estándares
Identificar las mejores prácticas con las herramientas de prueba asociadas,
para la construcción de aplicaciones Web seguras mediante la consulta de
estándares de la industria.
10
2. MARCO REFERENCIAL
2.1. ANTECEDENTES
Son muchos los documentos que se ha encontrado en cuanto al desarrollo de
sitios WEB, pero muy pocos los que se dediquen a la seguridad, aunque dentro
de sus contenidos siempre hay información que tiene que ver con la seguridad.
Traigo a colación estas páginas que me parecen interesantes en cuanto a que
trata los temas relacionados con este trabajo.
Guía para el desarrollo de sitios WEB, documento escrito por la Secretaría
técnica el gobierno digital de Costa Rica, (Digital, 2009)
Es un documento continuación o siguiente edición de otro documento
publicado en el 2007 realizado e impulsado por la Secretaría Técnica del
Gobierno digital del país de Costa Rica con el propósito de crear documentos
de consulta para las personas que se encargan de crear páginas WEB en las
instituciones públicas de ese país.
Si bien es cierto que las normas que rigen el país de Costa Rica no son las
mismas que rigen a Colombia, éste es un texto guía que nos permite utilizar el
modelo para la construcción de una guía con características similares; en
cuanto a la creación de las páginas web, son modelos estandarizados
mundialmente por tanto este documento nos presta una gran ayuda al
momento de crear nuestro documento guía.
Guía para el desarrollo de sitios WEB, patrocinado por el gobierno de Chile
(Chile, 2008) , en esta página puedes consultar cualquier ítem que tenga que
ver con el tema que ocupa en este trabajo. Como parte de la investigación, se
ha realizado un barrido de los temas de interés tales como: Requerimientos
se seguridad para la creación de páginas web y esta consulta arrojó los
siguientes resultados:
Normativas, leyes, decretos
Diseño de interfaces e interacción
Estándares Web
11
Definición de un sitio Web
Puesta en marcha de un sitio Web
Checklist
Medición de resultados en redes sociales
Manejo de DNS
Protección de la Estructura Interna del Sitio Web
Protección Contra Robots
Manejo de Privacidad
Canales Seguros
Mecanismos de Control de Acceso
Protección de Programas
Hosting Externo vs. Sitio Propio
Roles Mínimos a Asegurar
Son documentos con respaldo muy serio y que tocan el tema universal de los
sistemas de información y la comunicación TIC en todos sus ámbitos.
La Guía para el desarrollo de sitios WEB fue consultada el 15 de mayo de
2015, es una versión de descarga libre con el fin de que los usuarios que
trabajen con páginas web puedan tener acceso a ella y les sirva de norte en
el desarrollo de sus prácticas; esta guía ha sido publicada por el Ministerio de
Secretaría General de Gobierno de Chile en el 2007 y es la continuidad de la
guía inicial publicada en el 2004
12
3. MARCO TEÓRICO CONCEPTUAL
Cada vez que miramos en nuestro entorno, vemos la cantidad de tecnología que
existe, la comunicación, los juegos, la televisión, la telefonía, en fin, cada
negocio, cada casa y particularmente cada persona cuenta con un aparato que le
permite comunicarse y estar informado de manera inmediata. Nuestro activo
principal, tanto personal como de empresas es la información que genera ante
cualquier uso de la tecnología, y todo esto generalmente queda guardado en
nuestros aparatos electrónicos.
Es importante saber que cuando se utiliza un computador, un teléfono o
enviamos un correo, necesitamos de programas o aplicaciones que ayuden a
obtener y desarrollar la actividad que se requiere, los desarrolladores de estas
aplicaciones, los programadores que manejan páginas WEB son los actores más
importantes de este intercambio tecnológico y por supuesto están las amenazas,
los riegos y las vulnerabilidades latentes en cada uno de estos programas y
aplicaciones.
Un aporte fundamental que se pretende con este trabajo es ofrecer a los
estudiantes de media técnica de las instituciones educativas del municipio de
Medellín una guía que permita minimizar los riesgos a que están expuestos
desde el momento de la realización del programa, que los estudiantes desde su
aprendizaje tengan en cuenta esta guía y la incorporen al momento del desarrollo
de su actividad.
Lo primero que se debe tener en cuenta son algunos tips que existen para
proporcionar buenas prácticas en cualquier proyecto informático.
13
3.1. BUENAS PRÁCTICAS PARA EL DESARROLLO DE UN PROYECTO
INFORMÁTICO
3.1.1. ¿Qué son buenas prácticas?
Son un conjunto de acciones ordenadas, ciertas, coherente y seguras, con
objetivos claros y procedimientos adecuados, realizadas por personas que ponen
en práctica sus conocimientos en pro de satisfacer una necesidad identificada,
obviamente, cumpliendo con normas, políticas, reglas y estándares que la
certifiquen como apta para ponerla en funcionamiento y que se convierta en un
referente para mejorar otros procesos. (FEAPS, 2007)
3.1.2. ¿Porque se les llaman buenas prácticas?
Porque cumplen con normas, políticas, estándares y reglas que la hacen
válida y conforme a la Ley para que cumpla con su perfecto su
funcionamiento.
Porque atacan de raíz una necesidad convirtiéndola en una fortaleza.
Porque el personal encargado son personas calificadas y especializados para
desarrollar la labor.
Porque las propuestas son innovadoras y creativas.
3.1.3. ¿Que hace que una práctica sea mal desarrollada?
El tiempo reducido en su ejecución
Personal con conocimientos escasos del tema
Que la necesidad no sea tan evidente.
Desarrollo por investigaciones equivocadas
Etapas de inicio poco sólidas.1
1 Feaps.( 2007) Buenas prácticas FEAPS , pag. 6,7, 9 y 10
14
3.1.4. ¿Qué es un proyecto informático?
Es el cubrimiento de una necesidad identificada por alguien y realizado por un
grupo de personas conocedoras de las tecnologías de la información y la
comunicación, que construyen un producto de software que satisfaga esa
necesidad.2
3.1.5. Tips de buenas prácticas para el desarrollo de un proyecto
informático
Existe tanta literatura como medios para obtener los diferentes tips que hacen
que un proyecto informático sea reconocido como “buen proyecto”, porque
cumplen con los lineamientos específicos que lo hacen sobresalir de los demás
proyectos y porque culminan satisfaciendo las necesidades por los que fueron
creados. Aquí nombro algunos de ellos:
Lo primero que se debe hacer es un acercamiento con el cliente para saber
sus necesidades, expectativas, requerimientos y viabilidad de su petición.
Una vez se tenga reconocido el proyecto y lo que se va a hacer, se debe
empezar con la planificación del trabajo en general, hacer un bosquejo de los
resultados y hacérselo saber al cliente para poner en marcha el proyecto; de
ahí en adelante se debe tener en cuenta lo que sigue:
Involucrar al cliente en el desarrollo del proyecto. Hacer partícipe al cliente de
la evolución del proyecto y sobretodo en la fase de requerimientos, con esto
se garantiza que lo que se hace es lo que quiere el cliente.
Valorar la importancia del sistema a implementar. El cliente debe tener claro
que lo que se está haciendo será para beneficio de su empresa por tanto
debe instruir a sus empleados acerca de la importancia de poner en
funcionamiento el proyecto finalizado.
Concientizar al cliente y sobre todo a los empleados de que el proyecto en
mención es un apoyo a la gestión de los empleados y que en ningún
momento sustituirá al empleado quien es el responsable y decide qué, cuándo
y cómo realizar el trabajo.
2 M. Astudillo. (2009) El Proyecto informático. Documento disponible en: http://www.monografias.com/trabajos-pdf2/proyecto-informatico/proyecto-informatico.pdf
15
Tener siempre presente los objetivos del negocio.
Tener siempre una comunicación directa con el cliente, evitar los
intermediarios.
Elaborar un mapa de riesgos.
Flexibilidad en los requerimientos. El cliente hace la solicitud de un proyecto
producto de una necesidad manifiesta, sabe lo que necesita pero no sabe
cómo se desarrollará, por tanto a medida que se realicen los requerimientos,
el cliente puede ir modificando sus exigencias de acuerdo a la complejidad del
proyecto.
Evaluar de manera efectiva la complejidad de los requerimientos. Explicar al
cliente lo que significa en tiempo y plata sus requerimientos permitiendo al
cliente reformar sus exigencias y al realizador del proyecto cumplir con los
tiempos estipulados.
Reconocer delante del cliente la importancia de la realización del proyecto y
los beneficios que traerá a su empresa.
Cuando se dirija al cliente hacerlo en lenguaje ordinario, evitar las palabras
técnicas que confundan al cliente, los tecnicismos generan desconfianza, las
palabras comunes, hacen que el cliente entienda y confíe.
Averiguar quiénes serán los beneficiados con el proyecto, que hacen y que
necesitan y definir las posibles soluciones acordes con los procesos
implementados en la empresa.
Definir el alcance del proyecto, identificar los requerimientos y organizarlos de
acuerdo con su urgencia.
Una vez se está ejecutando el proyecto, se debe estar preparado para
posibles pequeñas variaciones en el alcance del proyecto, lo cual implica
reprocesar; esto solo es posible si redunda en mejor calidad en el proyecto y
excelente satisfacción para el cliente.
Se debe tener en cuenta de documentar constantemente, levantar actas de
las reuniones y documentar los procesos realizados.
Tener clara la trazabilidad del producto, conocer los requerimientos y todos
los métodos que se aplican para su solución desde el levantamiento de
requerimientos, pasando por los modelos arquitectónicos, el diseño, el
programa que se utilizará, el código fuente aplicado y los casos de prueba.
Utilizar diseños ágiles que le permitan hacer modificaciones a medida que el
proyecto avance, igualmente hacer modificaciones al modelo de acuerdo con
la exigencia del proyecto.
Realizar las pruebas de código y comprobar su funcionamiento.
Las herramientas que generan código facilitan en gran medida el trabajo.
El diseño es una parte esencial para el desarrollo del proyecto, con ello se
tiene identificado su inicio, avance y culminación.
16
Tener claro que en la etapa de requerimientos se debe hacer además de la
recolección y análisis de los requerimientos, un estudio de factibilidad que
integra la disponibilidad de recursos que se utilizarán para llevar a cabo el
proyecto, objetivos, alcance, limitaciones, costos aproximados, tiempo de
ejecución, etc.
Existen numerosas herramientas para desarrollo de software, tener en cuenta
las convenciones necesarias de acuerdo con el lenguaje de programación que
escoja.3
3.2. LA SEGURIDAD EN INFORMÁTICA
La seguridad informática no es más que la acción de proteger mediante
mecanismos técnicos y legales, los activos ante cualquier amenaza, riesgo o
daño que lo pueda atacar, empezando por los activos físicos con los cuales se
crea y adelantan las labores diarias, y siguiendo con la información generada que
finalmente se convierte en el reflejo del buen nombre de la empresa.
El Riesgo es la identificación de las vulnerabilidades medidas mediante la
probabilidad de que ocurra un suceso y los posibles daños que ocasionaría en el
desarrollo de la empresa, es allí donde toma parte la seguridad informática
buscando mecanismos de defensa y protección.
Es de vital importancia dirigir la protección de los activos hacia los objetivos
fundamentales de la seguridad como son la integridad, la disponibilidad y la
confidencialidad.
La Integridad, garantiza que los datos permanezcan exactos y que no puedan
ser borrados o modificados por personas no autorizadas, La firma digital es uno
de los mecanismos fundamentales para conservar la integridad en la información.
3 J.C. Herazo (2010) ¿Preparado para presentar tu proyecto de seguridad informática ante gerencia? Disponible en: http://liacolombia.com/2011/02/%C2%BFpreparado-para-presentar-tu-proyecto-de-seguridad-informatica-ante-gerencia/
17
La Disponibilidad asegura que la información se encuentre al alcance de los
que la necesiten y que estén autorizadas, para ello existen los permisos que se
otorgan a los usuarios, de lectura, de escritura y de ejecución.
La Confidencialidad asegura que la información esté resguardada y que solo
sea accesible para las personas que cuentan con la autorización necesaria para
utilizarla, para la confidencialidad es importante el cifrado de la información
relevante.
Estos tres objetivos podrían ser más eficaces si a cada usuario que haga uso de
la información de la empresa se le diera permiso y tuviera que autenticarse al
momento de ingreso, esto como parte de la seguridad y para que se pueda
identificar el tipo de operaciones que realiza y la clase de información pueda
manipular en un caso dado. Igualmente se debe tener el control de los
movimientos que se presenten con el sistema realizando registros y auditorías,
esto garantiza el no repudio (verificación que una transacción cualquiera que
sea su naturaleza haya sido entregada y recibida)4
Todo caso de seguridad en la empresa es de orden primordial toda vez que no
solamente existe ataques desde el exterior, sino que dentro de las mismas
compañías existen empleados que pueden afectar la información ya sea de
forma involuntaria o voluntaria y que pueden poner en riesgo la estabilidad de la
compañía.
3.2.1. Riesgos que pueden afectar la WEB
Cada día el uso de aplicaciones WEB en las compañías se hace más frecuente
dado el avance tecnológico en cuanto a comercio electrónico y a la necesidad de
prontitud y facilidad de las transacciones o negocios, las compañías cada día se
ven obligadas a manejar su información a través de la red lo que las hacen
vulnerables ante los ataques informáticos.
La empresa Gartnet Inc. Situada en Stamford, Connecticut, Estados Unidos, Está
dedicada a la consultoría e investigación de las Tecnologías de la información,
4 Infosegur (2013). Objetivos de la Seguridad informática. Disponible en: https://infosegur.wordpress.com/tag/no-repudio/
18
estima que el 75% de los ataques informáticos están direccionados hacia las
aplicaciones web y que generalmente éstos son producidos con fines de
ganancias económicas, por tan razón, la seguridad en las aplicaciones debe ser
tenida en cuenta desde el momento del diseño hasta el momento de su
ejecución.
Muchas de las aplicaciones que tienen que ver con transacciones comerciales
son objetivos de los delincuentes informáticos que tratan de violar la seguridad
para obtener claves, contraseñas, números de tarjetas de crédito etc.; Estas
aplicaciones generalmente presentan vulnerabilidades porque no son
desarrolladas con el tiempo necesario para tener en cuenta la seguridad dadas
las presiones ejercidas por el cliente para la entrega y porque no se tiene la
conciencia de la importancia que la seguridad representa.
Otro de los objetivos son las debilidades de HTTP que existen cuando se utilizan
puertos TCP conocidos como el puerto 80 y/o 443 para la comunicación y
aunque la función del Firewall es filtrar el tráfico de información que entra y sale
de dos redes o de computadores que trabajan dentro de una misma red y que
deben cumplir con unas reglas específicas (que en caso de no cumplirse, la
información es bloqueada), si utiliza estos puertos para permitir la comunicación,
de nada sirve.
3.3. QUE ES UNA APLICACIÓN WEB
Primero que nada debemos saber que la palabra WEB (Acrónimo de World Wide
Web), es una palabra inglesa que tiene como significado red, telaraña o malla y
es utilizada en los medios informáticos para referirnos a internet5
Una aplicación web, es una herramienta que ha sido creada mediante código con
el único propósito de interactuar con el usuario y cumplir con un propósito
específico de realizar una orden que le ha solicitado un usuario. Es también una
herramienta que se ejecuta en internet y por tanto todos los datos archivos, o
historial de navegación, quedan guardados en la web. Generalmente son 15 Consulta realizada el 24 de octubre de 2015, disponible en: http://definicion.de/web/
19
accedidas directamente (online) y no necesitan instalarse en el computador para
realizar su trabajo, un ejemplo de ello son Yahoo, Gmail o Microsoft Outlook, que
son programas que guardan la información en la nube y pueden ser accedidos
desde cualquier computador o dispositivo móvil en cualquier parte del mundo
Las aplicaciones web nos ofrecen muchas ventajas como su gratuidad o sea que
se puede obtener una aplicación que sirva para un fin específico de manera
gratuita y no necesita descargarse en el computador para poder ejecutarla.
Otras de sus bondades es la accesibilidad ya que como su información queda
guardada en la nube, se puede ingresar a ella en cualquier momento y lugar,
igualmente se puede trabajar en ellas de manera simultánea entre varios
usuarios.
3.3.1. Ciclo de vida en el desarrollo de aplicaciones web.
El auge que han tenido en los últimos años las TIC (Tecnologías de la
Información y la Comunicación) ha hecho que no solamente las empresas se
beneficien de ellas por la necesidad en sus transacciones casi que inmediatas y
la urgencia en las comunicaciones ágiles y efectivas, sino que ha ingresado a los
hogares obligando a las personas a hacer uso de ellas no solamente utilizando la
parte transaccional sino utilizándolas como método de investigación y hasta de
diversión y esparcimiento.
Es así como cada día se inventan nuevos plataformas, sistemas operativos,
programas, aplicaciones etc. que son el resultado de grandes investigaciones
que permiten suplir en gran parte las necesidades de los usuarios y que hacen al
mundo entero partícipe del uso de las tecnologías.
Las aplicaciones web son programas informáticos que se realizan a través de un
computador y que son accedidas por la web por medio de una red como internet
o intranet o sea que no necesitan ser descargadas y se puede acceder a ellas
desde cualquier lugar y en múltiples plataformas.
20
Existen muchísimas metodologías para el desarrollo de aplicaciones web, la
variedad de estas metodologías depende de los requerimientos. Existen técnicas
de modelado conceptual tradicional, métodos de diseño orientadas a objetos y
también existen mejoras del modelo conceptual implantando modelos de
navegación y presentación. (Silva, 2001), (Marcos, 2002).
Las aplicaciones web tienen un proceso de desarrollo o de vida que puede
dividirse en etapas; este proceso permite visualizar el trabajo de manera
ordenada, haciendo que cualquier persona sepa observarlo y entenderlo. Estas
etapas están divididas así:
Etapa de levantamiento de necesidades u oportunidades o de requisitos
Etapa de análisis
Etapa de diseño
Etapa de codificación,
Etapa de Pruebas
Etapa de instalación
Etapa de mantenimiento.6
ETAPA DE LEVANTAMIENTO DE NECESIDADES U OPORTUNIDADES O DE
REQUISITOS: En esta fase se identifican los usuarios y sus necesidades, las
formas de las necesidades de información, necesidades de navegación,
necesidades de adaptación y necesidades de interfaz de usuario. También
requisitos específicos de información, terminando con un prototipo de interfaz del
usuario.
ETAPA DE ANALISIS: Luego de que el cliente ha expresado sus necesidades, se
realiza entonces el análisis, se determinan los requisitos que debe tener la
aplicación, como público objetivo, hardware y software a utilizar, módulos,
requisitos técnicos, alcance, responsabilidades, plazos, costos etc.
ETAPA DE DISEÑO: Propuesta firmada como aceptada, adelanto en dinero,
material, esquemas de diseño o planos del programador, es la manifestación de
la estructura de la aplicación.
6 Consulta realizada el 28 de octubre de 2015, disponible en: http://elvex.ugr.es/idbis/db/docs/lifecycle.pdf
21
ETAPA DE CODIFICACIÓN: Desarrollo del código de acuerdo a la estructura
anterior, los desarrolladores deben conocer la interfaz y el código a desarrollar de
acuerdo con el lenguaje de programación es la traducción de la estructura en
código que ofrezcan como resultado una interfaz amigable al cliente.
ETAPA DE PRUEBAS: Las aplicaciones web necesitan pruebas de integración,
de tensión, de escalabilidad, de carga, de resolución y de compatibilidad, con ello
se comprueba que la aplicación se desarrolla en forma adecuada conforme a las
exigencias del cliente.
ETAPA DE INSTALACIÓN: Luego de haber terminado con la codificación y
realizado las pruebas pertinentes, llega esta etapa que es la entrega oficial del
proyecto al cliente, en donde se deja instalado el programa y funcionando, se
debe tener en cuenta que durante todo el proceso ha habido acompañamiento
directo con el cliente, por tanto en esta etapa ya se entrega el programa
funcionando a satisfacción del cliente
ETAPA DE MANTENIMIENTO: Generalmente las aplicaciones WEB necesitan
actualizaciones porque las correcciones de errores se van haciendo a medida
que se va desarrollando la codificación.
3.3.2. Arquitecturas para el desarrollo de aplicaciones web.
Una aplicación Web es un sitio dentro de internet que ha sido creada para
contener información a la que puede acceder desde un motor de búsqueda con
un tema específico, permitiendo a los usuarios obtener información rápidamente
con una gama amplia de alternativas de uso.
22
Figura 1: Arquitectura de una aplicación WEB
Fuente: http://www.n4designlab.com.mx/blog/index.php/119-aspectos-basicos-
de-las-aplicaciones-web
Tiene 3 componentes principales: Servidor web, conexión a la red y los clientes.
Un cliente realiza una petición desde un buscador, esta petición viaja usando una
conexión de red usando el protocolo HTTP y llega hasta un servidor web que se
encarga de buscar entre su sistema de archivos la solicitud y entrega la respuesta
correspondiente, una vez entregada la solicitud, se rompe el proceso.7
3.4. SEGURIDAD EN EL CICLO DE VIDA DE UNA APLICACIÓN WEB.
La seguridad que se debe aplicar al crear una aplicación web es un tema muy
amplio dados los puntos de vulnerabilidades que lo contienen y las amenazas
constantes a las que se está expuesta, es importante tener un conocimiento muy
amplio de la manera de prevenirlos, lo importante en la creación de una
aplicación web dinámica es que se puede actualizar constantemente.
7 Consulta realizada en 28.10-2015 disponible en: https://programacionwebisc.wordpress.com/2-1-arquitectura-de-las-aplicaciones-web/
23
Aunque las amenazas que rodean las aplicaciones web están latentes, es
importante tener en cuenta algunas recomendaciones para minimizar el riesgo,
algunas de ellas serían:
El servidor debe mantenerse en un lugar seguro donde no tenga acceso
de personas no autorizadas.
Realizar copias de seguridad frecuentemente y guardarlas en lugares
seguros.
Cierre los puertos que no utiliza y cancele los servicios no utilizados.
Mantenga un programa antivirus potente que vigile y reporte la información
que entra y sale.
Asegúrese de que se cumpla la orden de utilizar contraseñas fuertes y
ocultas.
Utilice firewall potentes.
Utilice la criptografía para proteger la información sensible.
Para descargas utilice solamente fuentes y páginas confiables.
Desconfíe de correos de remitentes desconocidos.
Verifique que la dirección comience por https, es una conexión segura y no
utilice computadores públicos para realizar transacciones.
Controle las entradas y salidas, contactos, información, contraseñas etc.
de las redes sociales.8
Existen variedad de herramientas que permiten detectar las vulnerabilidades de
las páginas web, sin embargo, existen métodos que ayudan a proteger la
información y a mantenerla oculta en caso de ataques cibernéticos. Para esto se
ha desarrollado una técnica importante en el ocultamiento de la información, LA
CRIPTOGRAFÍA.
3.4.1. ¿Qué es Criptografía?
Es la aplicación de una técnica, código o conjunto de códigos que han utilizado
para ocultar información importante. Desde tiempos antiguos como en la época
8 J. López.(2010) Monográfico: Seguridad en Internet – Consejos para minimizar los riesgos en la navegación por internet, disponible en: http://recursostic.educacion.es/observatorio/web/en/listado-monograficos?start=4
24
de los romanos, por necesidad de que no fueran descubiertas sus estrategias de
guerra enviaban códigos que solo ellos conocían y que nadie podía descifrarlos.
Igualmente se utilizó la máquina Enigma usada en la segunda Guerra mundial
para enviar mensajes cifrados y se han utilizado otros como el cifrado César, el
diseño Feistel, etc. (H. Corrales, C. Cilleruelo, A. Cuevas, 2014, p. 4)9
En nuestra época, con la llegada de las computadoras, el envío constante de
información a través de los correos electrónicos, las transacciones que se
realizan a través de la red, se hizo necesario encontrar una manera de esconder
de manera óptima la información de manera que se haga inteligible ante
cualquier ojo normal. Guardar información importante en los discos duros o en
cualquier otro dispositivo, hace que la información allí almacenada sea apetecida
por cualquier invasor dañino, es por esto que esta información, en ocasiones
primordial y puede llegar a ser muy valiosa para la empresa, por tanto esta
técnica que es utilizada para ocultar información importante que no pueda ser
accedida por nadie excepto por el creador y por el receptor de la información
quien conoce de antemano la clave; con ello se garantiza la integridad, la
confidencialidad y la disponibilidad de la información en tiempo real.
Figura 2: proceso de cifrado y descifrado de la información
Fuente: propia
Algunos ejemplos de algoritmos de criptografía clásica se pueden consultar en la
página https://genomorro.files.wordpress.com/2007/09/trabajo.pdf
3.4.2. ¿Qué uso tiene la Criptografía?
9 Consultado el 26 de octubre de 2015, disponible en: http://www3.uah.es/libretics/concurso2014/files2014/Trabajos/Criptografia%20y%20Metodos%20de%20Cifrado.pdf
25
La criptografía se creó con el propósito de esconder información de manera que
cualquier persona que acceda a ella no pueda descifrarla fácilmente.
La Criptografía se ha utilizado para:
Permitir que la información solo sea accedida por las personas autorizadas.
Solo pueda ser modificada por las personas que tengan los permisos para hacerlo.
Que la información se pueda consultar en cualquier momento que se requiera.
Hace más seguras las comunicaciones y permite que mediante el cifrado simétrica se pueda tener privacidad y velocidad de transferencia al mismo tiempo.
Con el uso de firmas digitales, se asegura que el acceso a la información sea más controlado.
Facilitan el comercio electrónico reduciendo los riesgos de robo.
La criptografía no solo es utilizada con fines benévolos, también ha sido utilizada
para robos al interior de las compañías
Fuga de información.
Encriptación de información con fines ilegales (pornografía, espionaje, música,
videos etc)
3.4.3. ¿Qué clases de tecnologías existen?
Existen muchas maneras de encriptar la información, algunas de ellas pueden ser:
Criptografía Simétrica: Técnica utilizada en ocultar información mediante una
única clave (números, letras, palabras o cadenas de letras o palabras
aleatorias con o sin sentido) que se utiliza para enmascarar y desenmascarar
un texto. Esta clave es conocida por el emisor y el recetor del mensaje.10
10 ANGEL, José de Jesús. Criptografía para principiantes. P. 13 Disponible en: http://spi1.nisu.org/recop/www.seguridata.com/pdf/cbasica.pdf
26
Criptografía Asimétrica: Técnica utilizada para el envío y recepción de
información mediante 2 claves, una pública (conocida por todos) y una privada
(conocida por una sola persona), la seguridad que ofrece la criptografía
asimétrica es que solo las dos claves son utilizadas para el descifrado de la
información. La clave pública la conoce el emisor para encriptar la información
y la clave privada es conocida solamente por el receptor para descifrarla.11
La Firma digital: Técnica que permite demostrar ante auditores, que los
documentos son propios, se realiza mediante un Hash generado al documento
original, mediante la clave pública se realiza el hash del descifrado y se
comparan, si coincide, la información es veraz y la firma es auténtica. Es
importante comprobar las fechas de caducidad o revoque.12
Certificados digitales: Técnica que consiste en utilizar un certificado o
paquete de información que identifica al usuario que contiene información
acerca de éste, como dirección de correo electrónico, clave pública, país de
origen, periodo de validez y firma digital del certificado. Generalmente es utilizada
para identificar al titular del emisor de la información; es una técnica utilizada
como refuerzo de las técnicas anteriores13
3.4.4. Servicios criptográficos disponibles
A continuación se enumeran algunas herramientas que ofrecen servicios de
encriptación, generadores de claves públicas y privadas y firmas digitales de
documentos:
EncryptOnClick: Aplicación que sirve para encriptar ficheros protegiéndolos con una contraseña a la que puede acceder solo las personas interesadas, su interfaz se compone de cuatro botones por los que se puede acceder a todas acciones del programa.
11 Ibid., p. 21 12 Ibid., p. 24 13 Ibid., p. 37
27
Folder encripter: Aplicación que permite encriptar y desencriptar mediante una contraseña, archivos o carpetas.
Softavir-strict: Herramienta que permite ejecutar solamente los programas que
hayan sido añadidos a la lista (Lista blanca), así asegura que no dejara que
ningún software intruso ingrese al sistema.
Secryptor: Herramienta que permite encriptar los archivos guardados en la
nube.
Cryptext: Herramienta que encripta y desencripta el menú contextual de
Windows.
Hide it Pro: Es una aplicación gratuita que sirve para encriptar archivos y
desencriptarlo mediante contraseña o pin.
Paragon Encrypted Disk SE: Es una herramienta que encripta archivos
mediante imágenes codificadas en diferentes tipos de codificación.
PGP ENCRYPTER: Programa que permite el cifrado de la información,
genera claves públicas y privadas y realiza firmas digitales.
GnuPG: Herramienta de seguridad que permite generar un nuevo par de
claves, intercambia claves. Cifra y descifra documentos y firma y verifica
firmas.
BCArchive : Herramienta para encriptar y desencriptar información.
SecureZIP Express: Herramienta disponible para el cifrado de información, expedición de certificados digitales mediante X.509 y entrega de claves.
3.5. BUENAS PRÁCTICAS DE CODIFICACIÓN – ARQUITECTURA PARA EL
DESARROLLO DE APLICACIONES WEB.
28
Antes de iniciar con la seguridad en aplicaciones, todos los que de alguna manera
deben trabajar con la parte de la seguridad informática, deben conocer acerca de
lo que significa OWASP (“Open Web, Application Security Proyect” o en español
“Proyecto abierto de seguridad de aplicaciones Web), ya que es una organización
de personas voluntarias que trabajan en pro de la comunidad, proporcionando
recursos gratuitos, apoyo a empresas para utilizar documentos, herramientas
confiables y gratuitas, recursos, foros y capacitaciones, con el fin de que cualquier
persona o empresa pueda acceder a ellas y obtener la mayor seguridad en todo lo
que respecta a la tecnología, cualquier información al respecto se puede encontrar
en página www.owasp.org
No es el propósito de este trabajo, reescribir los datos encontrados allí, pero es
una invitación para los que requieren del tema de seguridad en las empresas y
hasta en la utilización de aplicaciones a nivel personal, por lo menos se informen
acerca de estos temas.
Qué se puede encontrar en esta página:
Herramientas y estándares de seguridad en aplicaciones.
Libros completos de revisiones de seguridad en aplicaciones, desarrollo de
código fuente seguro, y revisiones de seguridad en código fuente.
Controles de seguridad estándar y librerías.
Capítulos locales en todo el mundo.
Investigaciones de vanguardia.
Extensas conferencias alrededor del mundo.
Listas de correo14
3.5.1. Seguridad en la Construcciones de aplicaciones
14 Consulta realizada el 13-11-2015 disponible en https://www.owasp.org/images/5/5f/OWASP_Top_10_-_2013_Final_-_Espa%C3%B1ol.pdf
29
Para evitar problemas de seguridad en una aplicación, es buena práctica construir
la seguridad dentro del Ciclo de Vida de Desarrollo del Software igualmente
probar en todas las etapas y con frecuencia para detectar vulnerabilidades
tempranas dentro del ciclo, que se traducen en correcciones a menor costo. Las
pruebas se deben hacer con entradas no convencionales, es decir, no los datos
esperados por la aplicación sino las excepciones. Es buena práctica La revisión
permanente del código, proceso de comprobar manualmente el código fuente de
una aplicación web en busca de vulnerabilidades15
Si bien es cierto que existen innumerables de fallas que se pueden producir para
mantener protegido los sistemas de información, también es cierto que la mayoría
de ellos ocurren desde el momento mismo de la creación de código ya que
generalmente no se tiene en cuenta la cantidad de riesgos a que se está expuesto
dada la complejidad de la infraestructura digital que maneja todo o que respecta
las información y la comunicaciones que viaja a través de internet.
La Fundación OWASP es una entidad sin ánimo de lucro está tomada como
referente dado que es un proyecto abierto, creado por personas que tienen un
vasto conocimiento en los sistemas y más en lo que se refiere al tema de
seguridad informática, dedicado a la búsqueda y lucha contra las causas de
software inseguro, tiene como fin crear conciencia acerca de la seguridad en la
información, es libre, por tanto cualquier persona se puede afiliar y aportar
conocimientos en pro del beneficio de los usuarios; podría tomarse como una guía
de consulta casi que obligatoria para los desarrolladores de software16
Los documentos originales están creados en el idioma Inglés, pero ya han sido
traducido algunos documentos a varios idiomas incluyendo el español, Podemos
utilizar los documentos y herramientas que ofrecen, OWASP tiene catalogado sus
proyectos en categorías, los proyectos de desarrollo y los de documentación.
Algunos de ellos son:
15 (https://www.owasp.org/index.php/Category:OWASP_Code_Review_Project) https://www.owasp.org/images/8/80/Gu%C3%ADa_de_pruebas_de_OWASP_ver_3.0.pdf 16 Página disponible en https://www.owasp.org
30
Una guía para construir aplicaciones y servicios Web seguros. Documento en español en donde se detalla la seguridad en aplicaciones Web, utilizando diferentes programas como J2EE, ASP, .NE, PHP., disponible en: https://www.owasp.org/images/b/b2/OWASP_Development_Guide_2.0.1_Spanish.pdf
Application Security Guide For CISOs. Documento en inglés que trata sobre ayudar a los jefes de los servicios informáticos, a gestionar los programas de seguridad de las aplicaciones. Disponible en: https://www.owasp.org/images/d/d6/Owasp-ciso-guide.pdf
OWASP Cheat Sheet: Trucos para identificar las vulnerabilidades y su defensa
Disponible en: https://translate.google.com.co/translate?hl=es-
419&sl=en&u=https://www.owasp.org/index.php/OWASP_Top_Ten_Cheat_Sh
eet&prev=search
OWASP Categoría de las Vulnerabilidades: Lista de las vulnerabilidades, que
son, como se utilizan y como combatirlas. Disponible en:
https://translate.googleusercontent.com/translate_c?depth=1&hl=es&prev=sear
ch&rurl=translate.google.com.co&sl=en&u=https://www.owasp.org/index.php/C
ategory:Vulnerability&usg=ALkJrhiPJIJCJW34BetOpiykG70P5dMKVw
Guía de pruebas OWASP: Muestra los procedimientos y herramientas para
probar la seguridad de las aplicaciones y está dedicada para desarrolladores
de software, Testers de software y especialista de seguridad especialmente.
Disponible en:
https://www.owasp.org/images/8/80/Gu%C3%ADa_de_pruebas_de_OWASP_
ver_3.0.pdf
Guía de revisión de código OWASPO: ofrece verificación de código de las
aplicaciones, aún no está publicado en español, solo en inglés. Disponible en:
https://www.owasp.org/images/2/2e/OWASP_Code_Review_Guide-V1_1.pdf
Lista de preguntas frecuentes con sus respuestas (en Inglés), disponible en:
https://www.owasp.org/index.php/OWASP_AppSec_FAQ
OWASP Top 10-213 – Los diez riesgos o vulnerabilidades más críticas en Aplicaciones Web, Es un documento en donde se relacionan los riesgos y
31
vulnerabilidades más críticas de las aplicaciones Web, explicando que son, como prevenirlas, ejemplos y referencias bibliográficas para documentarse. Disponible en: https://www.owasp.org/images/5/5f/OWASP_Top_10_-_2013_Final_-_Espa%C3%B1ol.pdf
La última actualización de los diez riesgos más críticos en aplicaciones Web es
del 2013 tomando como base la actualización de 2010; de acuerdo con un
estudio realizado por la página de OWASP17, catalogaron las 10 principales
vulnerabilidades o riesgos en la seguridad informáticas más críticos de las
aplicaciones Web, en ella está contenido las explicaciones de qué es, el
impacto, y cómo prevenirlos, algunos ejemplos de ataques realizados y
referencias o bibliografías en donde encuentra mayor información. Estos están
catalogados de la siguiente manera:
1. “A1 Inyección: Las fallas de inyección, tales como SQL, OS, y LDAP,
ocurren cuando datos no confiables son enviados a un intérprete como
parte de un comando o consulta. Los datos hostiles del atacante pueden
engañar al intérprete en ejecutar comandos no intencionados o acceder
datos no autorizados”.18
2. “A2 Pérdida de Autenticación y Gestión de Sesiones: Las funciones de
la aplicación relacionadas a autenticación y gestión de sesiones son
frecuentemente implementadas incorrectamente, permitiendo a los
atacantes comprometer contraseñas, claves, token de sesiones, o explotar
otras fallas de implementación para asumir la identidad de otros
usuarios.”19
3. “A3 Secuencia de Comandos en Sitios Cruzados (XSS): Las fallas XSS
ocurren cada vez que una aplicación toma datos no confiables y los envía
al navegador web sin una validación y codificación apropiada. XSS
permite a los atacantes ejecutar secuencia de comandos en el navegador
de la víctima los cuales pueden secuestrar las sesiones de usuario,
destruir sitios web, o dirigir al usuario hacia un sitio malicioso”.20
17 OWASP Top 10 – 2013- Los diez riesgos más críticos en Aplicaciones Web, Disponible en: https://www.owasp.org/images/5/5f/OWASP_Top_10_-_2013_Final_-_Espa%C3%B1ol.pdf 18 Ibid, pag. 7 19 Ibid, pag. 8 20 Ibid, pag. 9
32
4. “A4 Referencia Directa Insegura a Objetos: Una referencia directa a
objetos ocurre cuando un desarrollador expone una referencia a un objeto
de implementación interno, tal como un fichero, directorio, o base de
datos. Sin un chequeo de control de acceso u otra protección, los
atacantes pueden manipular estas referencias para acceder datos no
autorizados.”21
5. “A5 Configuración de Seguridad Incorrecta: Una buena seguridad
requiere tener definida e implementada una configuración segura para la
aplicación, marcos de trabajo, servidor de aplicación, servidor web, base
de datos, y plataforma. Todas estas configuraciones deben ser definidas,
implementadas, y mantenidas ya que por lo general no son seguras por
defecto. Esto incluye mantener todo el software actualizado, incluidas las
librerías de código utilizadas por la aplicación.”22
6. “A6 Exposición de Datos Sensibles: Muchas aplicaciones web no
protegen adecuadamente datos sensibles tales como números de tarjetas
de crédito o credenciales de autenticación. Los atacantes pueden robar o
modificar tales datos para llevar a cabo fraudes, robos de identidad u otros
delitos. Los datos sensibles requieren de métodos de protección
adicionales tales como el cifrado de datos, así como también de
precauciones especiales en un intercambio de datos con el navegador.”23
7. “A7 Ausencia de Control de Acceso a las Funciones: La mayoría de
aplicaciones web verifican los derechos de acceso a nivel de función antes
de hacer visible en la misma interfaz de usuario. A pesar de esto, las
aplicaciones necesitan verificar el control de acceso en el servidor cuando
se accede a cada función. Si las solicitudes de acceso no se verifican, los
atacantes podrán realizar peticiones sin la autorización apropiada.”24
8. “A8 Falsificación de Peticiones en Sitios Cruzados (CSRF): Un ataque
CSRF obliga al navegador de una víctima autenticada a enviar una
petición HTTP falsificado, incluyendo la sesión del usuario y cualquier otra
información de autenticación incluida automáticamente, a una aplicación
web vulnerable. Esto permite al atacante forzar al navegador de la víctima
21 Ibid, pag. 10 22 Ibid, pag. 11 23 Ibid, pag. 12 24 Ibid, pag. 13
33
para generar pedidos que la aplicación vulnerable piensa son peticiones
legítimas provenientes de la víctima.”25
9. “A9 Uso de Componentes con Vulnerabilidades Conocidas: Algunos
componentes tales como las librerías, los frameworks y otros módulos de
software casi siempre funcionan con todos los privilegios. Si se ataca un
componente vulnerable esto podría facilitar la intrusión en el servidor o
una perdida seria de datos. Las aplicaciones que utilicen componentes
con vulnerabilidades conocidas debilitan las defensas de la aplicación y
permiten ampliar el rango de posibles ataques e impactos”26.
10. “A10 Redirecciones y reenvíos no validados: Las aplicaciones web
frecuentemente redirigen y reenvían a los usuarios hacia otras páginas o
sitios web, y utilizan datos no confiables para determinar la página de
destino. Sin una validación apropiada, los atacantes pueden redirigir a las
víctimas hacia sitios de phishing o malware, o utilizar reenvíos para
acceder páginas no autorizadas”.27
Herramientas, aplicaciones o programas que permiten aplicar diferentes ataques,
con explicación de cómo funciona un ataque en tiempo real, como:
✔ WebScarab --> ZAP (The Zed Attack Proxy)
✔ Dirbuster
✔ DotNet
✔ ESAPI
✔ WebGoat
✔ Mantra Framework
✔ OWASP Live CD
✔ OWASP AntiSamy Java Project
✔ OWASP WAF
✔ Entre muchos más
3.6. TECNOLOGÍA A IMPLEMENTAR - ACUNETIX WEB VULNERABILITY
SCANNER
25 Ibid, pag. 14 26 Ibid, pag. 15 27 Ibid, pag. 16
34
Con la importancia que tiene la tecnología y la implementación de las diferentes
herramientas que nos proporciona la WEB, los delincuentes informáticos están al
acecho buscando en los sistemas quien tiene más descuidada la información, en
términos de seguridad, para ingresar y robar datos sensibles como claves,
información de tarjetas de crédito o bases de datos de clientes, todo con fines
lucrativos.28
La web, igualmente ofrece diferentes herramientas que permiten si no tener a
salvo la información, por lo menos minimizar los riesgos a que se está expuesto,
para escanear las vulnerabilidades de las aplicaciones en la WEB, se tendrá en
cuenta la herramienta ACUNETIX WEB VULNERABILITY SCANNER
3.6.1. Que es y para qué sirve ACUNETIX WEB VULNERABILITY SCANNER
Creada en 1997 con el fin de realizar análisis de sitios WEB y detección de
vulnerabilidades, es una herramienta que opera como un vigilante de seguridad
virtual que realiza escaneo de las aplicaciones web incluyendo las integradas,
servidores web y servidores perimetrales, su eficacia permite detectar
vulnerabilidades que aparentemente no son detectadas por otras herramientas
mediante el motor de análisis inteligente, demás entrega informes de auditoría
muy confiables.
3.6.2. ¿Qué detecciones realiza?
Son muchas las vulnerabilidades que detecta, entre otras tenemos:
Associada con OpenVAS (Open Vulnerability Assessment System) El escáner de seguridad, es una suite de software que integra servicios y
28 Consulta realizada el 25 de octubre de 2015, ADM TOOLS. Acunetix Web Vulnerability Scaner. Disponible en: http://www.adm-tools.com/portfolio/acunetixwebvulnerabilityscanner/
35
herramientas utilizadas para el escaneo y gestión de vulnerabilidades de seguridad de sistemas informáticos.
Escanea vulnerabilidades a nivel de red Detecta vulnerabilidades de SQL injection en la que los hacker modifican
comandos SQL para ingresar las bases de datos. Cross Site Scripting en la que los atacantes realizan scripts maliciosos en el
navegador del visitante. Ataques de CRLF Injection que se realiza cuando un delincuente
informático es capaz de inyectar datos en una petición a un servidor. Code execution: es una vulnerabilidad muy peligrosa ya que los
delincuentes ejecutan comandos del servidor remotamente. Directory traversal, se realizan cuando no hay seguridad respecto de la
validación de un usuario y acceden al directorio padre. Remote File inclusión, Se da solamente en páginas dinámicas en PHP que
contienen la función include(), dejando enlazar archivos remotos de otros servidores.
Autenticación, consiste en interceptar una sesión de la víctima y esperar a que se identifique para robar su datos
3.7. CREACION DE UNA PÁGINA WEB PARA EL DESARROLLO DEL
PROYECTO.
Dado que para los estudiantes es más cómodo ver una página Web, se ha creado
una página en la que puedan consultar la guía
http://liliseguridadinformatica.webnode.es/
36
4. DISEÑO METODOLÓGICO
4.1. TIPO DE INVESTIGACIÓN:
El tipo de investigación que se ajusta es la proyectiva, debido a que se está
investigando el ciclo de desarrollo de las aplicaciones web seguras, las mejores
prácticas de desarrollo seguro, comparando cada uno de las prácticas y
herramientas de seguridad que se manejan en la actualidad y con base en el
resultado del análisis de la informaciones construye una guía didáctica que sirve
para incluir en la formación de programadores actitudes de desarrollo de software
seguro.
4.2. MÉTODO:
El método de desarrollo del proyecto es sistémico, con base en la integración de
ciclo de vida del desarrollo, de las mejores prácticas de desarrollo de software
seguro produce una guía didáctica para aplicarla en la formación de
programadores.
4.3. PRODUCTO O RESULTADO QUE DEBE GENERAR EL PROYECTO
PROPUESTO
Con este trabajo se pretende realizar una guía de buenas prácticas para el
desarrollo de aplicaciones WEB seguras, para que los estudiantes de las
Instituciones Educativas del Municipio de Medellín que apenas inician en la
construcción de software las adopten convirtiéndolas en hábitos de programación.
De acuerdo con estudios realizados, se ha encontrado que muchos de los
problemas de seguridad en la WEB, se encuentran desde la construcción del
software.
37
4.4. ETAPAS DE LA INVESTIGACIÓN.
Etapa 1: Describir las características de las aplicaciones WEB en cada una de las
etapas del ciclo de desarrollo de software mediante la revisión de literatura y de
estándares, con el fin de identificar las principales vulnerabilidades de cada fase y
los posibles ataques.
Exploración de las características de las aplicaciones web.
Identificación de las vulnerabilidades en cada una de las fases de
desarrollo.
Identificación de los posibles ataques en cada una de las fases
Comparación de características, las vulnerabilidades y los posibles ataques
Validación de las características, las vulnerabilidades y los posibles
ataques identificados.
Etapa 2: Identificar las mejores prácticas con las herramientas de prueba
asociadas, para la construcción de aplicaciones seguras mediante la consulta de
estándares de la industria.
Exploración de herramientas de prueba de seguridad y caracterización
Selección de las herramientas a tener en cuenta en la guía.
Etapa 3: Proponer una Guía de buenas prácticas para el desarrollo de
aplicaciones WEB seguras, orientada a la formación de programadores.
Formulación de las buenas prácticas en cada etapa del ciclo de vida
Validación de la guía con pares académicos de Institución Educativos de la
AFDM
Validación de la guía con una muestra de estudiantes de la AFDM
38
5. RECURSOS DISPONIBLES:
Fuentes: Primarias asesor experto en seguridad
Secundarias Revistas, sitios web de proyectos de seguridad, estándares de
seguridad.
Tabla 1. Recursos indispensables para el desarrollo del proyecto.
Cantidad Artículo Valor
1 Equipo de cómputo portátil para ejecución del trabajo $1.700.000
1 Licencia de Windows $20.000
1 Impresora Láser para la impresión de informes $180.000
1 Conexión a internet para consulta de información $35.000
1 Papelería, tinta de impresora, otros $200.000
TOTAL $2.135.000
39
6. CRONOGRAMA
El plan de trabajo se encuentra organizado a partir de 4 tareas básicas que se
exponen a continuación con las actividades que incluyen:
a. Introducción
Búsqueda de material bibliográfico
Primer acercamiento al campo
Redacción y acoplamiento de la construcción proyecto de investigación.
Primera entrega.
b. Trabajo de campo
Investigación de los temas a tratar.
Realización de las actividades.
Registro de la experiencia de campo
c. Análisis de resultados
Composición de los puntos de la investigación.
Segunda entrega para sugerencias por parte del asesor.
Correcciones y última revisión.
d. Redacción final y presentación de la tesis
41
7. BIBLIOGRAFÍA
Chile, G. d. (2008). Guía Digital. Obtenido de Guía Web:
http://www.guiadigital.gob.cl/guia-web
Digital, G. (febrero de 2009). Gobierno de Costa Rica. Obtenido de Guia para el desarrollo
de sitios Web 2.0:
http://www.academia.edu/5852253/Gobierno_de_Gu%C3%ADa_para_el_Desarrol
lo_de_Sitios_Web_2.0_SI_IT_TI_IO_OS_S_W_WE_EB_B_2_2._.0_0_Tabla_de_Cont
enidos
FEAPS, C. (octubre de 2007). Calidad FEAPS. Obtenido de Buenas Prácticas FEAPS:
http://www.feapsmurcia.org/feaps/FeapsDocumentos.NSF/08db27d07184be50c1
25746400284778/84163cd187586d72c1256ffd003e699f/$FILE/queesBBPP.pdf
Lujan, Erika. Programación de aplicaciones WEB: Historia, principios básicos y clientes
WEB. [En línea]. https://books.google.es/books?hlties&lrti&idtir9CqDYh2-
loC&oitifnd&pgtiPR3&dqtiCARACTERISTICAS+DE+LAS+APLICACIONES+WEB&otstiM
izOSh4QCX&sigtig4-zTPoCphwq3Wtdp-
_gGgxfZ5o#vtionepage&qtiCARACTERISTICAS%20DE%20LAS%20APLICACIONES%20
WEB&ftifalse [Citado en 27 de abril de 2015]
Cáceres, P., Marcos, E. Procesos ágiles para el desarrollo de aplicaciones web. [En línea].
https://scholar.google.es/scholar?hlties&qtiCARACTERISTICAS+DE+LAS+APLICACIO
NES+WEB&btnGti&lrti [Citado en 27 de abril de 2015]
De Benito, B. Herramientas para la creación, distribución y gestión de cursos a través de
Internet [Citado en 27 de abril de 2015]. [En línea].
http://edutec.rediris.es/Revelec2/Revelec12/deBenito.html
42
López, Y., Ampuero, M., Infante, A. Formación de roles y buenas prácticas en el trabajo
por la calidad de un ingeniero informático. [En línea].
http://www.scielo.cl/scielo.php?pidtiS0718-
33052011000300008&scripttisci_arttext&tlngtien [Citado en 27 de abril de 2015]
Guía para el desarrollo de sitios Web – Gobierno de Chile. (2007) Recuperado de:
http://www.guiadigital.gob.cl/guiaweb_old/guia-v2/
Guía para el desarrollo de sitios Web – Gobierno de Costa Rica. Recuperado de internet:
http://www.gobiernofacil.go.cr/e-
gob/gobiernodigital/documentos/Guia%20para%20el%20Desarrollo%20de%20Siti
os%20Web%202.0%20-%20Gobierno%20de%20Costa%20Rica.pdf
Hispasec. (2013) OWASP: Los diez riesgos más críticos en aplicaciones WEB Recuperado
de: http://unaaldia.hispasec.com/2013/11/owasp-los-diez-riesgos-mas-criticos-
en.html
Cisco (2014) Autenticación Web en el controlador Wlan. Recuperado de:
http://www.cisco.com/cisco/web/support/LA/111/1118/1118157_web-auth-wlc-guide-
00.html
S. López (2006) Seguridad en desarrollo de aplicaciones Web. Disponible en:
http://www.monografias.com/trabajos75/seguridad-desarrollo-aplicaciones-
web/seguridad-desarrollo-aplicaciones-web2.shtml