La evaluación final del curso de OWASP tiene como objetivo medir tu comprensión y aplicación de los conceptos y prácticas de seguridad en aplicaciones web que has aprendido a lo largo del curso. Esta evaluación está diseñada para ser integral y cubrirá todos los módulos del curso.

Estructura de la Evaluación

La evaluación final se dividirá en tres secciones principales:

  1. Preguntas de Opción Múltiple
  2. Preguntas Abiertas
  3. Ejercicios Prácticos

  1. Preguntas de Opción Múltiple

Esta sección evaluará tu conocimiento teórico sobre los conceptos clave de OWASP. A continuación, se presentan algunos ejemplos de preguntas de opción múltiple:

Ejemplo de Pregunta 1:

¿Cuál de las siguientes vulnerabilidades se refiere a la inyección de código malicioso en una aplicación web?

a) Cross-Site Scripting (XSS)
b) Inyección SQL
c) Deserialización Insegura
d) Control de Acceso Roto

Respuesta Correcta: b) Inyección SQL

Ejemplo de Pregunta 2:

¿Qué herramienta de OWASP se utiliza principalmente para escanear vulnerabilidades en aplicaciones web?

a) OWASP SAMM
b) OWASP ASVS
c) OWASP ZAP
d) OWASP Top Ten

Respuesta Correcta: c) OWASP ZAP

  1. Preguntas Abiertas

En esta sección, se te pedirá que expliques conceptos y prácticas de seguridad en tus propias palabras. Aquí hay algunos ejemplos de preguntas abiertas:

Ejemplo de Pregunta 1:

Explica la importancia de la seguridad en el ciclo de vida del desarrollo de software (SDLC).

Respuesta Esperada: La seguridad en el ciclo de vida del desarrollo de software (SDLC) es crucial porque permite identificar y mitigar vulnerabilidades desde las primeras etapas del desarrollo. Esto no solo reduce el costo y el esfuerzo necesarios para corregir problemas de seguridad más adelante, sino que también ayuda a asegurar que el producto final sea seguro y confiable. Integrar prácticas de seguridad en cada fase del SDLC, desde la planificación hasta el mantenimiento, garantiza que la seguridad no sea una consideración de último momento, sino una parte integral del proceso de desarrollo.

Ejemplo de Pregunta 2:

Describe cómo OWASP ASVS puede ayudar a mejorar la seguridad de una aplicación web.

Respuesta Esperada: OWASP ASVS (Application Security Verification Standard) proporciona un marco estructurado para verificar la seguridad de las aplicaciones web. Al seguir los niveles de verificación y los requisitos de seguridad definidos en ASVS, los desarrolladores y evaluadores pueden asegurarse de que la aplicación cumple con los estándares de seguridad necesarios. ASVS ayuda a identificar y corregir vulnerabilidades, mejorar la calidad del código y garantizar que las prácticas de seguridad se implementen de manera consistente. Además, facilita la comunicación de los requisitos de seguridad entre los equipos de desarrollo y las partes interesadas.

  1. Ejercicios Prácticos

Esta sección evaluará tu capacidad para aplicar los conocimientos adquiridos en situaciones prácticas. A continuación, se presentan algunos ejemplos de ejercicios prácticos:

Ejemplo de Ejercicio 1:

Utiliza OWASP ZAP para escanear una aplicación web de prueba y genera un informe de vulnerabilidades. Describe los pasos que seguiste y las vulnerabilidades que encontraste.

Respuesta Esperada:

  1. Instalación y Configuración de OWASP ZAP:

    • Descargué e instalé OWASP ZAP desde el sitio oficial.
    • Configuré el proxy de ZAP para interceptar el tráfico de la aplicación web de prueba.
  2. Escaneo de la Aplicación Web:

    • Navegué por la aplicación web de prueba para que ZAP pudiera capturar todas las solicitudes y respuestas.
    • Utilicé la función de escaneo automático de ZAP para identificar vulnerabilidades.
  3. Generación del Informe:

    • Revisé los resultados del escaneo y generé un informe detallado de las vulnerabilidades encontradas.
    • Las vulnerabilidades identificadas incluyeron inyección SQL, XSS y configuración incorrecta de seguridad.
  4. Análisis de Resultados:

    • Analicé cada vulnerabilidad y proporcioné recomendaciones para su mitigación.

Ejemplo de Ejercicio 2:

Implementa un control de acceso basado en roles (RBAC) en una aplicación web de ejemplo. Proporciona el código y explica cómo garantiza la seguridad.

Respuesta Esperada:

# Ejemplo de implementación de RBAC en una aplicación web usando Flask (Python)

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
app.config['JWT_SECRET_KEY'] = 'super-secret'  # Cambiar a una clave secreta segura en producción

db = SQLAlchemy(app)
bcrypt = Bcrypt(app)
jwt = JWTManager(app)

# Modelos de base de datos
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(150), unique=True, nullable=False)
    password = db.Column(db.String(150), nullable=False)
    role = db.Column(db.String(50), nullable=False)

# Crear la base de datos
with app.app_context():
    db.create_all()

# Ruta de registro de usuario
@app.route('/register', methods=['POST'])
def register():
    data = request.get_json()
    hashed_password = bcrypt.generate_password_hash(data['password']).decode('utf-8')
    new_user = User(username=data['username'], password=hashed_password, role=data['role'])
    db.session.add(new_user)
    db.session.commit()
    return jsonify(message="User registered successfully"), 201

# Ruta de inicio de sesión de usuario
@app.route('/login', methods=['POST'])
def login():
    data = request.get_json()
    user = User.query.filter_by(username=data['username']).first()
    if user and bcrypt.check_password_hash(user.password, data['password']):
        access_token = create_access_token(identity={'username': user.username, 'role': user.role})
        return jsonify(access_token=access_token), 200
    return jsonify(message="Invalid credentials"), 401

# Decorador para verificar roles
def role_required(role):
    def wrapper(fn):
        @jwt_required()
        def decorator(*args, **kwargs):
            claims = get_jwt_identity()
            if claims['role'] != role:
                return jsonify(message="Access forbidden: insufficient privileges"), 403
            return fn(*args, **kwargs)
        return decorator
    return wrapper

# Ruta protegida solo para administradores
@app.route('/admin', methods=['GET'])
@role_required('admin')
def admin():
    return jsonify(message="Welcome, admin!")

if __name__ == '__main__':
    app.run(debug=True)

Explicación:

  • Registro e Inicio de Sesión: Los usuarios pueden registrarse y obtener un token JWT al iniciar sesión.
  • Roles: Cada usuario tiene un rol asignado (por ejemplo, 'admin').
  • Decorador role_required: Verifica que el usuario tenga el rol necesario para acceder a ciertas rutas.
  • Ruta Protegida: La ruta /admin solo es accesible para usuarios con el rol 'admin'.

Conclusión

La evaluación final te permitirá demostrar tu comprensión de los conceptos de OWASP y tu capacidad para aplicar prácticas de seguridad en aplicaciones web. Asegúrate de revisar todos los módulos del curso y practicar con las herramientas y técnicas presentadas. ¡Buena suerte!

Curso de OWASP: Directrices y Estándares para la Seguridad en Aplicaciones Web

Módulo 1: Introducción a OWASP

Módulo 2: Principales Proyectos de OWASP

Módulo 3: OWASP Top Ten

Módulo 4: OWASP ASVS (Application Security Verification Standard)

Módulo 5: OWASP SAMM (Software Assurance Maturity Model)

Módulo 6: OWASP ZAP (Zed Attack Proxy)

Módulo 7: Buenas Prácticas y Recomendaciones

Módulo 8: Ejercicios Prácticos y Casos de Estudio

Módulo 9: Evaluación y Certificación

© Copyright 2024. Todos los derechos reservados