0% encontró este documento útil (0 votos)
136 vistas4 páginas

Seguridad en El Desarrollo de Sistemas de Información

El documento describe los pasos clave de una metodología de programación segura, incluyendo la especificación, el diseño, la codificación, las pruebas y verificación. También discute técnicas como reducir la complejidad del código, realizar pruebas exhaustivas, implementar controles de seguridad, y consideraciones de codificación como validar los datos de entrada y usar encriptación.

Cargado por

Juan.Navarro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
136 vistas4 páginas

Seguridad en El Desarrollo de Sistemas de Información

El documento describe los pasos clave de una metodología de programación segura, incluyendo la especificación, el diseño, la codificación, las pruebas y verificación. También discute técnicas como reducir la complejidad del código, realizar pruebas exhaustivas, implementar controles de seguridad, y consideraciones de codificación como validar los datos de entrada y usar encriptación.

Cargado por

Juan.Navarro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

SEGURIDAD EN EL DESARROLLO DE SISTEMAS DE INFORMACIN

El desarrollo de sistemas es una tarea compleja, ya que es necesario tener en


cuenta de manera simultnea muchos elementos. Por lo tanto, es indispensable
usar una metodologa de programacin.
Una metodologa de programacin es un conjunto o sistema de mtodos,
principios y reglas que permiten enfrentar de manera sistemtica el desarrollo
de un programa que resuelve un problema algortmico. Estas metodologas
generalmente se estructuran como una secuencia de pasos que parten de la
definicin del problema y culminan con un programa que lo resuelve.
A continuacin se presenta de manera general los pasos de una metodologa:

El Dilogo: Con la cual se busca comprender totalmente el problema a


resolver.

La Especificacin: Con la cual se establece de manera precisa las


entradas, salidas y las condiciones que deben cumplir.

Diseo: En esta etapa se construye un algoritmo que cumpla con la


especificacin.

Codificacin: Se traduce el algoritmo a un lenguaje de programacin.

Prueba

Verificacin: Se

realizan

pruebas

del

programa

implementado para determinar su validez en la resolucin del problema.


La seguridad del cdigo fuente de un software cuyo objetivo es encontrar y
solucionar los errores de software, esto incluye: Utilizacin de funciones
seguras para proteger de desbordamientos de pila, declaracin segura de
estructuras de datos, control del trabajo con el flujo de datos, anlisis profundo
de otros errores de software mediante testeos del software en ejecucin y
creacin de parches para los mismos, diseo de parches para proveer un cierto
grado de seguridad proactiva, utilizacin de criptografa y otros mtodos para
evitar que el software sea crackeado.
La programacin defensiva es algunas veces referida como programacin
segura por los cientficos de computacin los cuales ubican este enfoque
minimizando errores de software.

Tcnicas de programacin defensiva


Algunas tcnicas de programacin defensiva sugeridas por algunos de los
cientficos lderes de computacin para disminuir y/o evitar problemas de
seguridad y errores de software:
Reducir complejidad del cdigo fuente: Nunca hacer el cdigo ms
complejo que lo necesario. La complejidad genera bugs, dificultad de
mantenimiento incluyendo problemas de seguridad.
Pruebas de software: Las pruebas de software debern ser para casos con
entradas correctas e incorrectas. Las herramientas de prueba pueden capturar
entradas de teclado asociadas con operaciones normales. Luego las cadenas de
texto de estas entradas capturadas pueden ser copiadas y editadas para
ensayar todas las permutaciones y combinaciones, luego ampliarlas para tests
posteriores despus de cualquier modificacin.
Programacin de auto recuperacin: Se considera lo ms posible escribir
programas que puedan recuperarse de cualquier error y manejar cualquier
entrada de datos. Manejar todas las ocurrencias inesperadas en un programa
requiere que el programador adicione cdigo extra, el cual pudiera tambin
tener bugs.
Reutilizacin inteligente del cdigo fuente: En lo posible se escribe cdigo
fuente separando la lgica del negocio de los algoritmos implementados del
proceso del negocio. La idea es capturar beneficios de un bien escrito y bien
probado cdigo fuente, en vez de crear bugs innecesarios.
Los problemas de legado: Antes de reutilizar viejo cdigo fuente, bibliotecas,
APIs, configuracin y dems, debe ser considerado si el trabajo anterior es
vlido para reutilizar, o si es propenso a problemas de legado. Los problemas de
legado son problemas inherentes cuando se espera que viejos diseos trabajen
con los requerimientos actuales, especialmente cuando estos viejos diseos no
fueron desarrollados o probados con estos requerimientos en mente.
Principio del menor privilegio: Emplear el principio del menor privilegio, No
conceder ms permisos que los necesarios. Preferir conceder permisos a grupos
pequeos de usuarios o usuarios especficos.

Baja

tolerancia

contra

errores

potenciales: Asumir

que

el

cdigo

construido No est al tanto de todos los tipos de explotaciones de seguridad y


se prepara el cdigo para ser proactivo utilizando el mecanismo de manejo de
excepciones en el lenguaje para indicar que un estado errneo del sistema ha
sido detectado y se guarda en bitcora ( Tratar de forma segura los errores ), y
en lo posible permitir a actualizaciones automticas.
Controles
Todo sistema deber contar con mecanismos de seguridad que alcancen a las
entradas, procesos, almacenamiento y salidas.
Los controles establecen un marco de trabajo para asegurar que sean
respetados y aplicados los mecanismos y polticas de seguridad:

Monitoreo del uso del software, con notificaciones automticas de


situaciones que ponen en riesgo la continuidad de la operacin y la
seguridad de la informacin.

Generacin de bitcoras de operacin sobre informacin crtica y sensible


con anlisis de uso as como alertas y notificaciones en situaciones de
riesgo.

Controles de operacin y configuracin de equipo de cmputo referido a


cada sistema.

Control de seguridad de datos por roles, ejemplo: cuentas especficas


para la aplicacin, cuentas de usuario, cuentas del desarrollador,
cuentas para la capacitacin, cuentas de usuarios externos

Controles sobre el proceso de implementacin con diferentes puntos


auditables del proceso.

Controles administrativos para garantizar que se llevan adecuadamente


reglas y procedimientos.

Evaluacin del software: Revisin y auditorias del cdigo que aseguren


que se respetan los estndares establecidos as como los documentos
metodolgicos.

Control preliminar: El sistema verifica los atributos, cantidades y


disponibilidad de recursos necesarios para su operacin.

Consideraciones de codificacin:

Evitar exponer las referencias

Verificar la autorizacin en todos los accesos

Usar referencias indirectas

Diferenciar datos validados de los del usuario

Evitar el uso de cookies

Comprobar la aplicacin con todo tipo de datos de entrada invlidos y analizar


los mensajes generados

Estrategia comn para gestionar excepciones

Deshabilitar o limitar los detalles mostrados sobre errores (especialmente de


capas internas: BD, SO...)

No usar los gestores de error por defecto

Garantizar que los caminos de ejecucin sensibles devuelven mensajes de error


idnticos en ms o menos el mismo tiempo (o hacerlo aleatorio)

Usar SSL exclusivamente para todo acceso autenticado

Encriptar todas las credenciales y tokens para almacenarlos (solo en mviles)

No exponer datos sensibles en URLs o registros

Utilizar un nico mecanismo de autentificacin

No usar direcciones IP, direcciones de dominio( DNS)

Ser cuidadoso con el envo de contraseas a direcciones de correo

Limitar o eliminar el uso de cookies para la autentificacin o gestin de sesiones


(ej: recordar al usuario en el sitio web)

No aceptar id. de sesin nuevos, preestablecidos o invlidos en URLs o


peticiones (evitar session fixation attacks)

Crear una nueva sesin tras la autentificacin o cambio de nivel de privilegio

Proporcionar enlaces para desconectarse

Utilizar mecanismos de autodesconexin

Slo almacenar lo imprescindible

Usar algoritmos probados (no crear nuevos)

No usar algoritmos dbiles (ej: MD5, SHA-1)

Gestin cuidadosa de claves

Claves generarlas fuera de lnea

Almacenar las claves privadas con extremo cuidado

Nunca transmitirlas por canales inseguros

Cuidar todos los caminos de acceso(web, ficheros, bases de datos, servidores de


aplicaciones)

No permitir que se pueda pasar de SSL a un modo inseguro

Restringir el acceso a URLs y funciones en cada paso

Realizar pruebas de penetracin

Cuidado con ficheros incluibles y libreras

No asumir que los usuarios desconocen ciertas URLs o APIs

Permitir acceso slo a ciertos tipos de ficheros (ej: HTML, PDF...)

Mantener actualizados los componentes que manejan datos proporcionados por


usuarios (imgenes, XML, textos...)

También podría gustarte