Software Seguro y Calidad
49 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál es la función de un compilador en el proceso de transformación de un lenguaje de alto nivel?

  • Optimizar el código para mejor rendimiento
  • Ejecutar el programa directamente
  • Convertir el lenguaje ensamblador en código máquina
  • Transformar el código de alto nivel en lenguaje ensamblador (correct)

Un intérprete convierte el código de alto nivel directamente en lenguaje máquina sin necesidad de compilación.

True (A)

¿Qué valor hexadecimal se mueve al registro ax cuando asignas 42 a la variable x?

2a

El lenguaje de más bajo nivel que puede entender directamente un procesador es el lenguaje __________.

<p>máquina</p> Signup and view all the answers

Relaciona los siguientes lenguajes con su tipo:

<p>JavaScript = Interpretado C = Compilado Python = Puede ser tanto interpretado como compilado Java = Puede ser tanto interpretado como compilado</p> Signup and view all the answers

¿Qué ventaja principal ofrece un entorno interpretado?

<p>Independencia de la plataforma (D)</p> Signup and view all the answers

Las aplicaciones en lenguajes compilados pueden ejecutarse sin necesidad de un compilador instalado en la máquina local.

<p>True (A)</p> Signup and view all the answers

¿Cuál es una desventaja principal de los lenguajes interpretados?

<p>Requieren que el intérprete esté instalado en la máquina local</p> Signup and view all the answers

¿Cuál es la función principal de un sandbox en relación con un applet de Java?

<p>Restringir el acceso a recursos del sistema. (A)</p> Signup and view all the answers

Los applets de Java pueden causar actividades maliciosas tanto a propósito como accidentalmente.

<p>True (A)</p> Signup and view all the answers

¿Quién media el acceso a los recursos del sistema en un entorno de sandbox?

<p>La máquina virtual de Java (JVM)</p> Signup and view all the answers

El ______ se encarga de verificar la adhesión a las reglas predeterminadas en Java.

<p>verificador de bytecode</p> Signup and view all the answers

Relaciona los componentes con sus funciones:

<p>Java Virtual Machine = Interpreta bytecode y gestiona recursos Cargador de applets = Carga applets desde el servidor Verificador de bytecode = Valida el código antes de su ejecución Gestor de seguridad de applets = Controla el acceso a recursos del sistema</p> Signup and view all the answers

¿Qué mecanismo proporciona la lengua Java para protegerse?

<p>Todos los anteriores (B)</p> Signup and view all the answers

Los programadores no pueden escribir applets que escapen del sandbox de Java.

<p>False (B)</p> Signup and view all the answers

¿Cuál es una de las amenazas a la seguridad que enfrentan los entornos de sandbox?

<p>Acceso no autorizado a recursos del sistema</p> Signup and view all the answers

¿Cuál es una de las funciones de las APIs en el contexto de la seguridad?

<p>Implementar controles de seguridad (D)</p> Signup and view all the answers

Las APIs permiten a los desarrolladores acceder a la funcionalidad del sistema operativo sin restricciones.

<p>False (B)</p> Signup and view all the answers

¿Qué es la validación de parámetros?

<p>Confirmar que los valores de parámetros recibidos están dentro de límites definidos.</p> Signup and view all the answers

Las __________ son colecciones de componentes que realizan tareas específicas útiles para otros componentes.

<p>bibliotecas de software</p> Signup and view all the answers

Relaciona cada sistema operativo con su característica respecto a las APIs:

<p>Apple macOS = Requiere APIs estándar para acceder a funciones del sistema Google Android = Usa APIs para acceso a la red y funciones de archivos Microsoft Windows = Implementa restricciones en el uso de APIs Linux = No requiere APIs para funcionalidades básicas</p> Signup and view all the answers

¿Por qué es importante validar los parámetros en un entorno cliente/servidor?

<p>El cliente puede ser comprometido o eludido (A)</p> Signup and view all the answers

¿Cuál es la principal función de un sistema de gestión de configuración de software (SCM)?

<p>Mantener la integridad y trazabilidad del software (A)</p> Signup and view all the answers

Las bibliotecas de software no juegan un papel importante en la reutilización del código.

<p>False (B)</p> Signup and view all the answers

Menciona un ejemplo de funcionalidad que las APIs permiten a los desarrolladores utilizar.

<p>Apertura y cierre de archivos.</p> Signup and view all the answers

Las configuraciones inseguras no afectan la seguridad de un producto de software seguro.

<p>False (B)</p> Signup and view all the answers

¿Qué problema resuelve la gestión de configuración en el desarrollo de software?

<p>El problema de las configuraciones incorrectas que pueden surgir durante el ciclo de vida del desarrollo.</p> Signup and view all the answers

La gestión de configuración permite el control de cambios a través de __________.

<p>automatización</p> Signup and view all the answers

Asocia las funcionalidades de los sistemas SCM con su descripción:

<p>Versionado = Control de cambios y seguimiento de revisiones Fusión = Unir cambios de diferentes desarrolladores Sincronización = Mantener actualizados varios repositorios de código Gestión de concurrencia = Manejo de cambios en archivos extraídos por múltiples usuarios</p> Signup and view all the answers

¿Cuál de las siguientes opciones representa un riesgo en la gestión de configuración?

<p>Cambios no controlados en archivos (C)</p> Signup and view all the answers

Los sistemas SCM no son relevantes en entornos de desarrollo seguros.

<p>False (B)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones describe mejor el acoplamiento bajo?

<p>Un módulo puede pasar un valor a otro módulo sin esperar resultados de otros módulos. (C)</p> Signup and view all the answers

¿Qué determina el seguimiento de cambios en un sistema SCM?

<p>La capacidad de verificar que el software final incluye todos los cambios aprobados.</p> Signup and view all the answers

El acoplamiento elevado disminuye la complejidad del programa.

<p>False (B)</p> Signup and view all the answers

¿Qué se entiende por cohesión alta en un objeto?

<p>Un objeto que está diseñado para realizar una única función lógica.</p> Signup and view all the answers

El proceso de definir lo que hace una clase o un objeto y omitir cómo lo logra internamente se conoce como _____ .

<p>abstracción</p> Signup and view all the answers

Empareja los siguientes términos con sus descripciones:

<p>Acoplamiento alto = Dependencia de múltiples módulos Cohesión alta = Realización de una única función Abstracción = Sistematización de la interacción entre componentes API = Definición de la manera en que los componentes se interrelacionan</p> Signup and view all the answers

¿Qué efecto tiene la complejidad en la seguridad de un programa?

<p>Aumenta la probabilidad de vulnerabilidades. (B)</p> Signup and view all the answers

La disminución de la complejidad de un programa puede ayudar a mejorar su seguridad.

<p>True (A)</p> Signup and view all the answers

¿Cuál es el objetivo principal de una API?

<p>Especificar cómo los componentes de software interactúan entre sí.</p> Signup and view all the answers

¿Cuál es una ventaja de utilizar SSH en los repositorios?

<p>Cifra todo el tráfico (C)</p> Signup and view all the answers

La infraestructura de clave pública (PKI) asegura la no repudio en las comunicaciones SSH.

<p>True (A)</p> Signup and view all the answers

¿Qué se requiere para llevar a cabo una evaluación de seguridad de software?

<p>Revisar documentos aplicables y desarrollar un plan de verificación.</p> Signup and view all the answers

El desarrollo seguro de software se basa en una política organizacional fundamentada en la gestión de ______.

<p>riesgos</p> Signup and view all the answers

Empareja los métodos de evaluación de seguridad con su descripción:

<p>SAST = Análisis de código estático DAST = Análisis de código dinámico Unit Testing = Pruebas de componentes individuales Integration Testing = Pruebas de integración entre componentes</p> Signup and view all the answers

¿Cuál de los siguientes es un método de prueba mencionado para evaluar la seguridad del software?

<p>SAST (D)</p> Signup and view all the answers

Elegir un proveedor de servicios de repositorio web es una opción adecuada para proyectos con grandes inversiones de propiedad intelectual.

<p>False (B)</p> Signup and view all the answers

Menciona dos áreas que requieren atención adicional durante una evaluación de seguridad de software.

<p>Gestionar riesgos asociados con el desarrollo de software y auditar cambios de software.</p> Signup and view all the answers

El principal propósito de una evaluación de seguridad de software es verificar que la cadena desde la política hasta el ______ funciona correctamente.

<p>producto</p> Signup and view all the answers

Flashcards

Applet

Un pequeño programa de software que se ejecuta dentro de un navegador web o una aplicación.

Entorno de arena (sandbox)

Un entorno seguro y confinado para que los applets puedan ejecutarse sin afectar al sistema principal.

Máquina virtual Java (JVM)

Un programa que actúa como intermediario entre el applet y los recursos del sistema operativo, verificando su comportamiento.

Código de byte

Código intermedio que la JVM ejecuta.

Signup and view all the flashcards

Verificador de código de byte

Componente del JVM que valida si el código de byte es seguro antes de ejecutarlo.

Signup and view all the flashcards

Seguridad en applets Java

Mecanismos que protegen el sistema del comportamiento no deseado de los applets, evitando el acceso no autorizado a los recursos del sistema.

Signup and view all the flashcards

¿Qué hace el sandbox?

Limita el acceso del applet a los recursos del ordenador.

Signup and view all the flashcards

Posibles riesgos de los applets

Pueden ejecutar acciones maliciosas si no se desarrollan correctamente. Pueden acceder a recursos que no deberían o causan errores.

Signup and view all the flashcards

Acoplamiento Fuerte

Cuando los módulos de un programa están fuertemente conectados, un cambio en uno puede afectar significativamente a los demás.

Signup and view all the flashcards

Acoplamiento Débil

Los módulos de un programa están conectados de forma independiente, por lo que un cambio en uno no afecta significativamente a los demás.

Signup and view all the flashcards

Cohesión Alta

Un módulo tiene una función lógica única y específica, este es un aspecto ideal en el desarrollo de software.

Signup and view all the flashcards

Cohesión Baja

Un módulo tiene funciones diversas y no relacionadas.

Signup and view all the flashcards

Complejidad en Software

Mayor número de interacciones, componentes e interdependencias hace el software difícil de entender, mantener y seguro.

Signup and view all the flashcards

Interfaz de Programación de Aplicaciones (API)

Define cómo los componentes software interactúan entre sí.

Signup and view all the flashcards

Abstracción

Definir qué hace un objeto u objeto sin especificar cómo lo hace internamente.

Signup and view all the flashcards

Lenguaje de alto nivel

Un lenguaje de programación que es más fácil de leer y escribir para los programadores humanos que el lenguaje máquina.

Signup and view all the flashcards

Lenguaje máquina

El único lenguaje que el procesador puede entender directamente; una serie de bits (0 y 1).

Signup and view all the flashcards

Compilador

Un programa que traduce un programa escrito en un lenguaje de alto nivel a lenguaje ensamblador (o lenguaje de bajo nivel).

Signup and view all the flashcards

Lenguaje ensamblador

Un lenguaje de programación de bajo nivel que es más fácil de leer que el lenguaje máquina, pero menos que un lenguaje de alto nivel.

Signup and view all the flashcards

Ensamblador

Un programa que traduce el lenguaje ensamblador a lenguaje máquina.

Signup and view all the flashcards

Interpretador

Un programa que ejecuta directamente el código de alto nivel, línea por línea, sin necesidad de compilación previa.

Signup and view all the flashcards

Portabilidad

La capacidad de un programa para ejecutarse en diferentes sistemas operativos y plataformas sin modificaciones significativas.

Signup and view all the flashcards

Lenguajes interpretados

Lenguajes de programación que usan un interpretador para ejecutar el código, en contraste con los lenguajes compilados.

Signup and view all the flashcards

Lenguajes compilados

Lenguajes de programación que requieren un compilador para traducir el código a lenguaje máquina antes de su ejecución.

Signup and view all the flashcards

Ventajas de la interpretación

Mayor portabilidad, manejo automático de memoria por el interpretador.

Signup and view all the flashcards

Desventaja de la interpretación

Requiere la instalación del interpretador en cada máquina para ejecutar el programa, no es una aplicación autónoma.

Signup and view all the flashcards

APIs

Interfaz de programación de aplicaciones que proporciona un punto de acceso a funcionalidades del sistema operativo para las aplicaciones.

Signup and view all the flashcards

Validación de Parámetros

Comprobar si los valores de los parámetros recibidos por una aplicación están dentro de los límites permitidos antes de su procesamiento.

Signup and view all the flashcards

Arquitectura Cliente/Servidor

Modelo de aplicación donde un cliente solicita servicios a un servidor.

Signup and view all the flashcards

Bibliotecas de Software

Colecciones de componentes que realizan tareas específicas y útiles para otras partes del programa.

Signup and view all the flashcards

Reutilización de Software

Usar componentes o partes de programas existentes en lugar de escribir código nuevo para la misma función.

Signup and view all the flashcards

Mantenimiento de Software

Proceso de modificar, mejorar o corregir un software existente.

Signup and view all the flashcards

TPMs

Módulos de plataforma de confianza que restringen las comunicaciones con módulos no confiables.

Signup and view all the flashcards

¿Qué es el Control de Configuración de Software?

Un sistema que identifica los atributos del software en diferentes momentos, controlando metódicamente los cambios para mantener la integridad y trazabilidad del software durante todo su ciclo de vida.

Signup and view all the flashcards

Sistema de Control de Configuración (SCM)

Identifica las características de un software en distintos momentos y gestiona metódicamente los cambios.

Signup and view all the flashcards

Problemas de Concurrencia

Situaciones que surgen cuando varias personas modifican el mismo archivo en un repositorio central.

Signup and view all the flashcards

Gestión de la Concurrencia

Maneja los problemas que surgen cuando múltiples personas acceden y modifican archivos simultáneamente en un repositorio centralizado.

Signup and view all the flashcards

¿Para qué sirve un SCM?

Para controlar los cambios en el software a lo largo de su ciclo de vida, asegurando su integridad y trazabilidad.

Signup and view all the flashcards

Repositorios centrales

Sistemas que contienen el código central del software y en los que SCM realiza su función.

Signup and view all the flashcards

Configuración incorrecta

Una amenaza común para la seguridad de un software, incluso en ambientes seguros, evitable con una adecuada Gestión de Configuración.

Signup and view all the flashcards

Repositorios SSH

Los repositorios configurados con SSH cifran el tráfico, incluso en intranets, mitigando el riesgo de interceptación.

Signup and view all the flashcards

Infraestructura de Claves Públicas (PKI)

Un sistema que permite implementar confidencialidad, integridad y no repudio en las comunicaciones SSH.

Signup and view all the flashcards

Proveedores de Repositorios Web

Servicios online que gestionan la seguridad de repositorios, útiles para organizaciones con presupuesto o expertos limitados.

Signup and view all the flashcards

Evaluación de Seguridad de Software

Proceso para validar que las prácticas de desarrollo de software seguro, desde la política hasta el producto, funcionen correctamente.

Signup and view all the flashcards

Políticas y Estándares de Seguridad

Guías y procedimientos a seguir para asegurar que el software se desarrolle de manera segura, basada en la gestión de riesgos.

Signup and view all the flashcards

Pruebas de Seguridad de Software

Métodos como SAST y DAST, más pruebas unitarias e integraciones, para verificar la seguridad del software.

Signup and view all the flashcards

Gestión de Riesgos en Desarrollo de Software

Manejo adecuado de los riesgos asociados al desarrollo de software.

Signup and view all the flashcards

Auditoría y Registro de Cambios de Software

Acciones de control para mantener un registro de los cambios en el software.

Signup and view all the flashcards

Study Notes

Secure Software

  • Programming languages are crucial for software creation, with machine language (binary) being the most fundamental form.
  • Assembly language uses symbols (mnemonics) to represent machine code, improving programmer efficiency.
  • High-level languages (e.g., C, Java, Python) are closer to human language than machine code, leading to more readable and maintainable code.
  • Quality software is defined as fitness for purpose.
  • Successful software compromises exploit vulnerabilities. These vulnerabilities often stem from defects in the code's design or execution.
  • Software security and quality are intrinsically linked; one cannot exist without the other.
  • High-quality software is harder to exploit because it's less prone to defects.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Description

En este cuestionario, exploraremos la relación entre la programación de software, su calidad y la seguridad. Aprenderás sobre los diferentes niveles de lenguajes de programación y cómo afectan la capacidad de un software para resistir vulnerabilidades. Conoce las mejores prácticas para asegurar que el software cumpla con su propósito de manera efectiva.

More Like This

Use Quizgecko on...
Browser
Browser