You are on page 1of 5

Conceptualizacion.Objetivos.

Problemas que resuelve Programacin defensiva La programacin es una forma de diseo defensivo aplicada al diseo de software que busca garantizar el comportamiento de todo elemento de una aplicacin ante cualquier situacin de uso por incorrecta o imprevisible que sta pueda parecer. En general, esto supone multiplicar las comprobaciones que se realizan en todos los mdulos programados, con la consiguiente penalizacin en carga de procesador, tiempo y aumento en la complejidad del cdigo. Las tcnicas de programacin defensiva se utilizan especialmente en componentes crticos cuyo mal funcionamiento, ya sea por descuido o por ataque malicioso, podra acarrear consecuencias graves o daos catastrficos. La programacin defensiva es un enfoque que busca mejorar el software y el cdigo fuente, en trminos de: Calidad - reduciendo el nmero de fallos de software y, en consecuencia, problemas. Haciendo el cdigo fuente comprensible - el cdigo fuente debe ser legible y comprensible, a prueba de una auditora de cdigo. Hacer que el software se comporte de una manera predecible pese a entradas o acciones de usuario inesperadas. Por ejemplo: - Prev y busca soluciones que puedan evitar fallos en el diseo de un software. - Garantiza el funcionamiento esperado de algn elemento de la aplicacin ante cualquier situacin que pueda aparecer, por muy extrao que sea.

Ejemplo

Proyecto que solicitaba la ubicacin del usuario para su localizacin en un mapa.

Se decidi utilizar los campos pas y poblacin, pero al poco tiempo se detecto que algunos usuarios confundan poblacin con nmero de habitantes si se situaba junto a pas. Para ese momento, ya haban varios usuarios registrados de los cuales no se sabia su poblacin.

El problema se soluciono cambiando la palabra poblacin por localidad en el formulario.

Pero era evitable si se hubiese tenido ms en cuenta la programacin defensiva validando mejor los campos del formulario.

Segn SANS, la primera de las 10 peores vulnerabilidades que hay es:

-No VERIFICA de los parmetros de ENTRADA y SALIDA de las funciones de nuestros programas.

-ISO 27001

12.2.1: El insumo de data en las aplicaciones debe ser validado para asegurar que esta data sea correcta y apropiada. 12.2.2, 12.2.3 y 12.2.4: que no hayan errores, integridad y validar output.

OBJETIVOS PROBLEMAS QUE RESUELVE Se utiliza especialmente en componentes crticos con muy mal funcionamiento.

Elimina los graves daos de consecuencias catastrficas que podra acarrear un descuido propio un ataque malicioso.

Es un enfoque que busca mejorar el software y el cdigo fuente. Hacerlo ms estable, menos robusto y lo menos complejo posible.

Ofrecer calidad general

El cdigo fuente debe ser lo ms legible y entendible, a prueba de una auditoria de cdigo

Hacer que el software se comporte de una manera predecible.

El software se comporte de una manera predecible pese a entradas o acciones de usuario inesperadas.

http://es.wikipedia.org/wiki/Programaci%C3%B3n_defensiva En que fase del proceso de desarrollo de software es til En la fase de Prueba debido a que en esta fase se le pueden realizar un conjuntos de tcnicas como lo establece QA(Quality Assurance).Esta se encarga de evaluar todos los aspectos de la medicin sistemtica, la comparacin con estndares, el
seguimiento de los procesos, todas actividades asociadas con bucles de realimentacin de informacin. Estas actividades contribuyen a la prevencin de errores.

http://es.wikipedia.org/wiki/Quality_Assurance Vulnerabilidades y puntos crticos mas comunes al crear aplicaciones

Qu es una Vulnerabilidad? Es cualquier defecto en el mismo que permita explotarlo con el fin de que un atacante pueda hacerse con el control del sistemaPueden deberse a:Una mala configuracin del software por parte del administrador/usuario.Una incorrecta programacin durante el proceso de desarrollo o actualizacin del software.La gran mayora hoy en da se deben al segundo caso ya que: Existe bastante documentacin de usuario para configurar el software. Desconocimiento de seguridad informtica en la mayora de programadores. Empresarios que interrumpen los ciclos de desarrollo del software para terminar antes los productos.Las auditoras de seguridad de cdigo fuente apenas se practican. 11. Vulnerabilidades y Puntos Crticos ms comunes al crear aplicacionesGrupo de Vulnerabilidades mas importantes en la actualidad segn SANS: 1. Interaccin insegura entre componentes: Relacionada con el envo y recepcin de datos entre sistemas, componentes, mdulos, programas, procesos o hilos por separado. 2. Manejo de recursos: Relacionada con el manejo inapropiado durante la creacin, uso, transferencias o destruccin de recursos del sistema. 3. Defensas porosas: Relacionadas con tcnicas defensivas mal, o

abusadamente utilizadas o simplemente ignoradas 12. Vulnerabilidades y Puntos Crticos Entre las 25 mas importantes existentes en la actualidad tenemos como referencia las siguientes:Defectos o fallas en la preservacin de la estructura de las consultas SQL (SQL-injection).Fallas en la preservacin de la estructura de las pginas web ( Cross-site Scripting)Control externo del estado de la aplicacin (por ejemplo al utilizar cookies para mantener el estado).Inicializacin defectuosa.Uso de un algoritmo criptogrfico quebrado (obsoleto).Contraseas establecidas en el cdigo (hardcoded).Franyelvis Colmenares

Ejemplo: Vulnerabilidad Efectos Inyeccion Sql Sucede cuando se inserta o inyecta un codigo sql invasor dentro de otro codigo sql para alterar su funcionamiento normal, y hacer que se ejecute maliciosamente el codigo en la base de datos. Puede suceder tanto en programas ejecutandose en computadoras de escritorios, como una pagina web, debido a que estas pueden funcionar mediante programas ejecutandose en el servidor que se aloja SQL(Sentencias sql)

Lenguajes que aplica

Como evitar la inyeccin? Asignacin de mnimos privilegios Validar todas las entradas

Empleo de procedimientos almacenados

Utilizar comillas dobles en vez de las simples

La cuenta debe tener solo privilegios que esta necesita. Si un campo de texto solo se puede ingresar un tipo de dato, pues se debe validar la entrada para tal efecto y especificar la longitud de caracteres a ingresar Utilizar procedimientos almacenados y aceptar los datos del usuario como parametros en lugar de instrucciones sql En el archivo que procesa los datos de entrada del usuario reemplazamos las comillas simples por comillas dobles, impidiendo inyecciones sql

16. Polticas de ProgramacinLa primera cosa que se debe hacer es redactar una poltica de programacin, que contenga:Las cosas que NO se deben hacerLa existencia de patronesEl know-how de la empresa o grupo de desarrolladoresExplcitamente indicar la suma importancia del seguimiento de las reglasComplejidad ciclomticaTcnicamente, se puede cumplir con estas reglasLogging (log4net, log4j)Peer review (revisin de pares)Try / catchFranyelvis Colmenares

You might also like