Protocolo Colaborativo Unidad 4 de Seguridad de Software

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

Asignatura Datos del CIPA Fecha

Nombre CIPA: VICTOR, GABRIEL, TATIANA


Integrantes:
SEGURIDAD DE
VICTOR ANDRES CETRE RODRIGUES JULIO DEL 2021
SOFTWARE
GABRIEL IRIARTE BENITEZ
TATIANA RAMIREZ CASSIANI

Actividad
Protocolo colaborativo de la unidad n°: 4

Análisis y síntesis:
Síntesis e interpretación colaborativa de los temas vistos en la unidad

Buenas prácticas para desarrollar software seguro

El desarrollo seguro de software es un modelo de trabajo que se basa en la


realización de chequeos de seguridad continuos del proyecto en construcción,
incluso desde sus fases iniciales y antes de que se escriba una sola línea de
código. Estas pruebas se centran en descubrir y corregir cualquier error en una
etapa temprana, y comprenden tests de autentificación, autorización,
confidencialidad, no repudio, integridad, estabilidad, disponibilidad o resiliencia.

El objetivo es, al fin y al cabo, asegurarnos de que impediremos el acceso al


programa y a los datos almacenados por parte de usuarios carentes de permiso.
Es sencillo aprender a programar, en internet encontrarás miles de tutoriales que
te permitirán aprender de mejor o peor forma los elementos básicos de un
lenguaje de programación y a hacer uso de ello para el desarrollo de tu propio
software. Como podrás ver, lo realmente complicado no es adquirir una base más
o menos digna para el desarrollo de un software, lo realmente complicado y que
se adquiere tras mucha práctica, es programar de forma estructurada, precisa y
rigurosa. A la hora de abarcar un desarrollo software, debemos tener en cuenta
las siguientes prácticas:
1.- Definición de requisitos. Alcance del proyecto.
Puede parecer una tontería, al menos debo conocer que tengo que programar y
para qué va a servir, pero no es así, la mayor parte de los clientes no saben
realmente que es lo que quieren y mucho menos como implementarlo en un
desarrollo. Merece la pena sentarse con el cliente y los usuarios finales de la
aplicación y definir a donde se quiere llegar y como lo haremos. Es imprescindible
redactar un documento de alcance y que todos los participantes del proyecto
(programadores, analistas, jefes de proyecto, cliente que solicita el desarrollo y
usuarios finales que harán uso de la aplicación) estén totalmente de acuerdo. El
análisis de unos requisitos y la redacción de un documento de alcance nos evitará
más de un dolor de cabeza durante y en la finalización del proyecto.

2.- Dividir los desarrollos en fases o entregables.


Una vez redactado un alcance, es conveniente separar en proyecto en secciones
Asignatura Datos del CIPA Fecha
Nombre CIPA: VICTOR, GABRIEL, TATIANA
Integrantes:
SEGURIDAD DE
VICTOR ANDRES CETRE RODRIGUES JULIO DEL 2021
SOFTWARE
GABRIEL IRIARTE BENITEZ
TATIANA RAMIREZ CASSIANI

o fases que permitan al cliente ir viendo resultados durante el desarrollo. Si un


proyecto tiene una duración de 10 meses, no podemos tener al cliente sin ver
nada durante los 10 meses de desarrollo, hay que ir mostrando los resultados,
cosa que también nos servirá para ir realizando determinados ajustes y no llegar
al final del proyecto y el cliente nos haga cambiar más de la mitad de los
desarrollos. Dividir el proyecto en fases, sprint o secciones nos permitirá
marcarnos objetivos en periodos cortos e ir mostrando los resultados.

3.- Elección de un IDE que se adapte a tus necesidades.


Dependiendo del lenguaje de programación que vayamos a utilizar, será
conveniente el uso de un Entorno de Desarrollo integrado (IDE) u otro, ya que
cada IDE está enfocado a uno o varios lenguajes de programación. Por ejemplo,
si vamos a programar en java, sería conveniente hacer uso de los IDE NetBeans
o Eclipse, si vamos a hacerlo en Python podemos hacer uso de Atom o Visual
Studio Code, si vamos a hacer un desarrollo en php o html podemos hacer uso
de PhpStorm. Si, por el contrario, queremos hacer uso de un IDE que pueda
servirnos para varios lenguajes de programación, podemos hacer uso de alguno
que permita importar librerías y funciones de algún lenguaje concreto como es
sublimetext.

4.- Estandarizar las reglas del desarrollo.


Cuando vamos a comenzar con los desarrollos hay que definir nuestra forma de
trabajar: La forma de llamar y definir las funciones, las variables, el nombre de los
ficheros, atributos, etc. En un buen código se distinguen fácilmente estos
elementos. Un código que no sigue alguna normalización resulta más complicado
de mantener.

5.- DRY: Dont repeat yourself.


No repitas código, modulariza tus desarrollos. Repetir partes de código a lo largo
de un desarrollo solo sirve para dificultar el mantenimiento y aumentar la
probabilidad de cometer errores. Agrupa en funciones las operaciones que se
repitan, y aíslala del resto del código, el esfuerzo necesario para el mantenimiento
del código disminuirá. Si estos trozos de código son requeridos por otros ficheros,
no solo elimínalos del flujo natural, si no que colócalo en un fichero aparte y
accesible por todos los elementos del código.

6.- No inventes.
Si ya se disponen de módulos y librerías ya testeadas y optimizadas, no pierdas
el tiempo en un desarrollo. Los IDE actuales disponen de librerías que te ayudarán
en tus desarrollos.

7.- Comenta tu código.


Para facilitar las modificaciones y mantenimiento, pero recuerda, un buen código
Asignatura Datos del CIPA Fecha
Nombre CIPA: VICTOR, GABRIEL, TATIANA
Integrantes:
SEGURIDAD DE
VICTOR ANDRES CETRE RODRIGUES JULIO DEL 2021
SOFTWARE
GABRIEL IRIARTE BENITEZ
TATIANA RAMIREZ CASSIANI

es aquel que no necesita comentarios. Redacta sentencias simples e intenta


elaborar una solución sencilla y corta. Cuanto más corta sea, menos errores se
producirán y más fácil será localizarlos y solventarlos.

8.- Divide y vencerás.


Divide los desarrollos complejos en varios más sencillos. Enrocarse en buscar
una solución que abarque todas las posibilidades o funcionalidades te va a hacer
perder mucho el tiempo. Divide el desarrollo en funcionalidades y prográmalas
atendiendo a su función principal y a la integración con el resto.

9.- Testeo de código.


Realizarás muchas pruebas durante el desarrollo del software y sobre todo al final
de este. Prepara una batería de pruebas que puedas ejecutar en cualquier
momento. Muchas veces el ajuste de algunos elementos provoca alguna
incongruencia con otros, con tu batería de pruebas debes poder detectar esto.

10.- Optimización.
No todas las instrucciones y módulos necesitan la misma capacidad de
procesamiento intenta utilizar siempre las más sencillas.

11.- Seguridad.
Durante el desarrollo de nuestro software tenemos que tener en cuenta los
siguientes puntos:

 El acceso a los ficheros (tanto de forma física, como permisos).


 La posibilidad de modificar el código en la misma ejecución o la inyección
sql.
 Desbordamiento de buffer al hacer uso de un array sin tamaño controlado.
 Formateo de los datos de entrada (en formularios).
 Actualización del IDE y las funciones. Una función obsoleta puede originar
un agujero de seguridad en nuestro código.
 Uso de contraseñas en el código. Las contraseñas deben estar cifradas y
en la base de datos.

12.- Documentación.
Durante los desarrollos intenta documentar todo lo que haces para facilitar el
entendimiento del desarrollo y funcionamiento del software al personal del
proyecto y futuras personas que trabajen en él.

Con estas 12 medidas nos garantizamos una buena metodología a la hora de desarrollar,
Asignatura Datos del CIPA Fecha
Nombre CIPA: VICTOR, GABRIEL, TATIANA
Integrantes:
SEGURIDAD DE
VICTOR ANDRES CETRE RODRIGUES JULIO DEL 2021
SOFTWARE
GABRIEL IRIARTE BENITEZ
TATIANA RAMIREZ CASSIANI

que nos va a permitir obtener beneficios claros, si seguimos los pasos indicados. Es por esto
por lo que merece la pena invertir tiempo en la definición previa y desarrollo de un proyecto.

Facilitar mantenimiento

Una vez finalizado el código y puesto en producción, es normal tener que realizar ajustes o
pequeñas modificaciones para satisfacer las necesidades de los usuarios. Si durante el
desarrollo se ha seguido unas pautas correctas, el tiempo dedicado al mantenimiento será el
que necesiten el desarrollo de las modificaciones, sí, por el contrario, la programación ha sido
repetitiva y no modular, nos tocará realizar cambios en bastantes partes del código,
aumentando los tiempos de desarrollo y la probabilidad de que caigamos en algún error.

Facilitar la escalabilidad.

Un código bien estructurado, sencillo y limpio facilita la integración con nuevos módulos o
desarrollos que complementen la funcionalidad inicial de la aplicación. Si nuestro código es
complicado y está mal estructurado es difícil identificar y reestructurar los puntos o módulos
donde tenemos que trabajar para implementar los nuevos desarrollos.

Facilitar el testeo, localización y resolución de errores.

Realizar pruebas en una programación es una de las partes más importantes por no decir la
más importante, comprobar que el programa funciona según los requisitos es esencial para
presentar un producto de calidad y acorde a las necesidades del cliente. Se realizarán
pruebas durante y al final del desarrollo.

Amenazas que tener en cuenta cara al desarrollo seguro de software

El desarrollo seguro de software se lleva a cabo tomando medidas para


combatir las amenazas informáticas. Este tipo de ataques maliciosos tienen
como fin comprometer la actividad digital de un conjunto de personas, causar un
daño o robar, bien sea dinero o bien información reservada.

La lista de ciberamenazas es larga y se nutre constantemente de nuevos


peligros. Virus, troyanos, phishing, malware, bombas lógicas, screen scraping,
amenazas avanzadas persistentes (APT), ransomware, spyware… Y suma y
sigue. Basta con echar un vistazo a la web del proyecto OWASP, que actualiza
continuamente su top 10 de los problemas de seguridad críticos para las
aplicaciones web.

Por nuestra parte, en BETWEEN queremos poner el acento en tres tipos de


ataques informáticos tremendamente dañinos que se pueden minimizar
mediante el desarrollo seguro de software:
Asignatura Datos del CIPA Fecha
Nombre CIPA: VICTOR, GABRIEL, TATIANA
Integrantes:
SEGURIDAD DE
VICTOR ANDRES CETRE RODRIGUES JULIO DEL 2021
SOFTWARE
GABRIEL IRIARTE BENITEZ
TATIANA RAMIREZ CASSIANI

 SQL Injection. Ocurre cuando una tercera parte inserta fragmentos de


código intruso en, por ejemplo, el campo de entrada de un formulario.
Esto le franqueará el acceso a la base de datos de la víctima.
 XSS (Cross Site Scripting). Se basa en la inyección de scripts dentro de
una web usando HTML, JavaScript u otro lenguaje de codificación. El
script se ejecutará en el navegador del cliente con el fin de espiar sus
sesiones, redirigirlo a sitios web dañinos, sustraer su información
personal o manipular su actividad.
 Ataques de denegación de servicios (DDoS). Tienen lugar cuando una
red de dispositivos lanza un ataque simultáneo, realizando una solicitud
masiva de peticiones que el servicio se ve incapaz de atender.

Discusión:
Dudas, desacuerdos, discusiones

Desarrollar un software significa construirlo simplemente mediante


su descripción. Está es una muy buena razón para considerar la actividad
de desarrollo de software como una ingeniería. En un nivel más general, la
relación existente entre un software y su entorno es clara ya que el software es
introducido en el mundo de modo de provocar ciertos efectos en el mismo.
Aquellas partes del mundo que afectarán al software y que serán afectadas por él
será el Dominio de Aplicación. Es allí donde los usuarios o clientes observarán si
el desarrollo del software ha cumplido su propósito.
Una de las mayores deficiencias en la práctica de construcción de software es la
poca atención que se presta a la discusión del problema. En general los
desarrolladores se centran en la solución dejando el problema inexplorado. El
problema a resolver debe ser deducido a partir de su solución.
Esta aproximación orientada a la solución puede funcionar en campos donde
todos los problemas son bien conocidos, clasificados e investigados, donde
la innovación se ve en la detección de nuevas soluciones a viejos problemas.
Pero el desarrollo de software no es un campo con tales características. La
versatilidad de las computadoras y su rápida evolución hace que exista un
repertorio de problemas en constante cambio y cuya solución software sea de
enorme importancia.
Asignatura Datos del CIPA Fecha
Nombre CIPA: VICTOR, GABRIEL, TATIANA
Integrantes:
SEGURIDAD DE
VICTOR ANDRES CETRE RODRIGUES JULIO DEL 2021
SOFTWARE
GABRIEL IRIARTE BENITEZ
TATIANA RAMIREZ CASSIANI

Cuando se va desarrollar un software intervienen muchas personas como lo es


el cliente quien es el que tiene el problema en su empresa y desea que sea
solucionado, para esto existe el analista de sistema quien es el encargado de
hacerle llegar todos los requerimientos y necesidades que tiene el cliente a los
programadores quienes son las personas encargadas de realizar lo que es
la codificación y diseño del sistema para después probarlo y lo instalan al cliente.
Es así como intervienen varias personas ya que una sola persona no podría
determinar todo lo necesario lo mas seguro que le haga falta algún requerimiento
o alguna parte del nuevo sistema y entre mas estén involucradas mejor para cubrir
con todos los requerimientos del sistema.
El desarrollo del software y la programación es uno de los pilares fundamentales
de la informática y al cual se dedican muchas horas de esfuerzos en empresas,
colegios, academias y universidades.
Conforme a la tecnología va avanzando, van apareciendo nuevas soluciones,
nuevas formas de programación, nuevos lenguajes y un sin fin de herramientas
que intentan realizar el trabajo del desarrollador un poco mas fácil.
La programación orientadas a objetos o los compiladores basados en maquinas
virtuales (en muchos casos, multiplataforma), también a sus puestos unas
renovación en la manera de programar.
Microsoft como empresa desarrolladora se software, es consciente de lo
importante que es hacer buenos desarrollos y lo complicado que es; por eso,
intenta aportar las mejores soluciones al mercado. En la actualidad la sociedad
se encuentra en una época de transición, que se encamina hacia un nuevo estilo
de programación basada en estándares y para ello Microsoft propone la
plataforma

El desarrollo de software y las redes ha permitido nuevas aplicaciones web


interactivas que tienen acceso a los recursos del sistema y proporcionan el mismo
nivel de control que las aplicaciones de escritorio.

Los principios de programación de computadoras implementados hoy


probablemente influirán en cómo las tecnologías tales como reconocimiento de
voz, inteligencia artificial y otras tecnologías sofisticadas cambiarán en el futuro y
cómo se aplicarán a nuestras vidas diarias. Por ejemplo, la tendencia hacia la
automatización de las búsquedas y compras en Internet para ser más localizada
está en curso. Mientras que las plataformas de hardware desarrolladas jugarán
Asignatura Datos del CIPA Fecha
Nombre CIPA: VICTOR, GABRIEL, TATIANA
Integrantes:
SEGURIDAD DE
VICTOR ANDRES CETRE RODRIGUES JULIO DEL 2021
SOFTWARE
GABRIEL IRIARTE BENITEZ
TATIANA RAMIREZ CASSIANI

un papel importante, la tecnología informática probablemente estará en el centro


de todo y la programación de sistemas futuros será un aspecto importante.

No importa qué tipo de trabajo haga un desarrollador de software, porque siempre


tendrá responsabilidades generales para realizar en su papel como programador.
La primera es desarrollar nuevos métodos de programación de computadoras.
Estos pueden incluir desde métodos básicos de programación de computadoras
hasta métodos más profundos. Otra responsabilidad general que un programador
de computadoras debe asumir en su rol diario de trabajo es el desarrollo de los
programas mismos. Este es un concepto extremadamente importante asociado
con el papel de un programador de computadoras ya que estas son las personas
que construyen los programas útiles que son utilizados por muchos.

Otra responsabilidad general de un programador es consultar con partes externas


en relación con la construcción de métodos de programación de computadoras y
los propios programas. Por último, los programadores de computadoras deben
seguir el progreso de los programas para asegurarse de que están funcionando
correctamente y corregir los errores de programa que puedan ocurrir a lo largo
del camino.

Hoy en día, la mayoría de la gente no necesita saber cómo funciona una


computadora. La mayoría de las personas pueden simplemente encender una
computadora o un teléfono móvil y apuntar a algún pequeño objeto gráfico en la
pantalla, hacer clic en un botón o deslizar un dedo o dos, y la computadora hace
algo. Cómo interactuar con un programa de computadora es todo lo que la
persona promedio necesita saber.

Pero, si estás interesado en aprender a escribir programas de computadora,


necesitas saber un poco acerca de cómo funciona una computadora. Tu trabajo
será instruir a la computadora para que haga las cosas. Básicamente, el software
desarrollado (programas informáticos) está describiendo cómo hacer algo. En su
forma más simple, es mucho como escribir los pasos que se necesita para hacer
algo, un proceso, un procedimiento. Las listas de instrucciones que escribirás
Asignatura Datos del CIPA Fecha
Nombre CIPA: VICTOR, GABRIEL, TATIANA
Integrantes:
SEGURIDAD DE
VICTOR ANDRES CETRE RODRIGUES JULIO DEL 2021
SOFTWARE
GABRIEL IRIARTE BENITEZ
TATIANA RAMIREZ CASSIANI

serán programas de computadora y las cosas que estas instrucciones manipulan


son diferentes tipos de objetos, por ejemplo, números, palabras, gráficos, etc ...

Por lo tanto, escribir un programa de computadora puede ser como componer


música, como diseñar una casa, como crear un montón de cosas. Se ha
argumentado que en su estado actual, el desarrollo de software, es un arte,
no una ingeniería.

También podría gustarte