1. ¿Qué es el "Secure Development Lifecycle" (SDL) y por qué es importante? |
El SDL es un enfoque para desarrollar software con seguridad incorporada en cada fase del ciclo de vida del desarrollo. Es importante porque ayuda a identificar y mitigar vulnerabilidades desde el inicio. |
|
2. ¿Cómo se implementan controles de acceso en una aplicación web? |
Se implementan mediante autenticación y autorización, asegurando que los usuarios tengan acceso solo a las partes del sistema para las cuales están autorizados. |
# Python: Implementación de control de acceso con Flask
from flask import Flask, request, jsonify
from functools import wraps
app = Flask(__name__)
def requires_auth(f):
@wraps(f)
def decorated(*args, **kwargs):
if not request.headers.get('Authorization'):
return jsonify({'message': 'Unauthorized'}), 401
return f(*args, **kwargs)
return decorated
@app.route('/secure-data')
@requires_auth
def secure_data():
return jsonify({'data': 'This is protected'})
if __name__ == '__main__':
app.run()
|
3. ¿Cómo se realiza una validación adecuada de entradas para prevenir inyecciones SQL? |
Se utilizan consultas preparadas y parámetros para evitar inyecciones SQL. |
# Python: Validación de entradas con consultas preparadas en SQLite
import sqlite3
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
user_input = 'user'
query = "SELECT * FROM users WHERE username = ?"
cursor.execute(query, (user_input,))
results = cursor.fetchall()
print(results)
|
4. ¿Qué es el principio de "least privilege" y cómo se aplica en el desarrollo de software? |
El principio de "least privilege" asegura que cada usuario o proceso tenga solo los permisos necesarios para realizar su tarea. Se aplica limitando los accesos a recursos y funcionalidades. |
|
5. ¿Cómo se asegura la integridad de los datos en una aplicación? |
Se utilizan técnicas como la firma digital y la verificación de hash para asegurar que los datos no sean alterados durante su transmisión o almacenamiento. |
# Python: Verificación de hash con SHA-256
import hashlib
data = b'Hello, World!'
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print(hex_dig)
|
6. ¿Qué es el "Cross-Site Scripting" (XSS) y cómo se previene? |
XSS es una vulnerabilidad que permite inyectar scripts maliciosos en una página web. Se previene validando y escapando entradas del usuario. |
// JavaScript: Ejemplo de escape de entrada en una aplicación web
function escapeHtml(text) {
const map = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return text.replace(/[&<>"']/g, function(m) { return map[m]; });
}
const userInput = '';
const safeInput = escapeHtml(userInput);
console.log(safeInput);
|
7. ¿Cómo se realiza un análisis estático de código para encontrar vulnerabilidades? |
Se utilizan herramientas de análisis estático que examinan el código fuente en busca de patrones de vulnerabilidad sin ejecutar el programa. |
|
8. ¿Qué son las pruebas de penetración y por qué son importantes? |
Las pruebas de penetración simulan ataques para identificar vulnerabilidades en una aplicación. Son importantes para detectar problemas de seguridad antes de que los atacantes reales los exploten. |
|
9. ¿Cómo se implementa el cifrado de datos en tránsito? |
Se utilizan protocolos como TLS para cifrar los datos durante su transmisión a través de redes. |
// Java: Configuración de HTTPS con TLS
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import java.security.KeyStore;
import java.security.cert.CertificateFactory;
import java.io.FileInputStream;
public class HttpsExample {
public static void main(String[] args) throws Exception {
KeyStore keyStore = KeyStore.getInstance("JKS");
FileInputStream fis = new FileInputStream("keystore.jks");
keyStore.load(fis, "password".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
System.out.println("SSLContext configured");
}
}
|
10. ¿Qué es la autenticación multifactor y cómo se implementa? |
La autenticación multifactor requiere que los usuarios proporcionen dos o más formas de verificación antes de acceder a un sistema. Se implementa combinando algo que el usuario sabe, algo que tiene y algo que es. |
|
11. ¿Cómo se maneja la seguridad de las contraseñas en una aplicación? |
Se deben almacenar contraseñas de forma segura usando técnicas como el hashing con sal y técnicas de estiramiento de clave. |
# Python: Ejemplo de hashing de contraseñas con bcrypt
import bcrypt
password = b'password123'
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
print(hashed)
# Verificar contraseña
if bcrypt.checkpw(password, hashed):
print("Contraseña correcta")
else:
print("Contraseña incorrecta")
|
12. ¿Cómo se implementan controles de acceso basados en roles (RBAC) en una aplicación? |
Se implementan asignando roles a los usuarios y definiendo permisos específicos para cada rol en la aplicación. |
|
13. ¿Qué es el "Security by Design" y cómo se aplica durante el desarrollo de software? |
"Security by Design" es el principio de diseñar software con seguridad integrada desde el principio. Se aplica mediante la incorporación de prácticas de seguridad en cada fase del desarrollo. |
|
14. ¿Cómo se realiza la seguridad en el almacenamiento de datos en bases de datos? |
Se asegura el almacenamiento de datos mediante cifrado de datos, controles de acceso, y auditoría de actividades. |
|
15. ¿Qué técnicas se utilizan para proteger contra ataques de CSRF (Cross-Site Request Forgery)? |
Se utilizan tokens CSRF, que se generan y validan con cada solicitud para garantizar que la solicitud proviene de una fuente confiable. |
|
16. ¿Cómo se asegura el desarrollo de APIs seguras? |
Se asegura mediante autenticación, autorización, validación de entrada, y cifrado de datos. |
|
17. ¿Qué es el "Threat Modeling" y cómo se aplica durante el desarrollo de software? |
"Threat Modeling" es un proceso para identificar, entender y gestionar amenazas en una aplicación. Se aplica mediante la identificación de posibles amenazas, vulnerabilidades y el diseño de contramedidas. |
|
18. ¿Cómo se realiza el monitoreo y registro de actividades en una aplicación? |
Se realiza mediante la implementación de sistemas de registro y monitoreo que registran eventos y actividades para detectar comportamientos sospechosos. |
|
19. ¿Qué es la seguridad en el ciclo de vida del software y cómo se implementa? |
La seguridad en el ciclo de vida del software es la integración de prácticas de seguridad en cada fase del desarrollo. Se implementa a través de pruebas de seguridad, auditorías y revisiones de código. |
|
20. ¿Cómo se implementa la seguridad en la integración continua y entrega continua (CI/CD)? |
Se implementa mediante la inclusión de pruebas de seguridad automatizadas, escaneo de vulnerabilidades y revisión de configuraciones en los pipelines de CI/CD. |
|
21. ¿Cómo se implementan medidas de seguridad en el desarrollo móvil? |
Se implementan mediante la protección de datos sensibles, autenticación y autorización segura, y validación de entradas. |
|
22. ¿Qué son las vulnerabilidades de seguridad comunes en aplicaciones web y cómo se mitigan? |
Vulnerabilidades comunes incluyen XSS, CSRF, y SQL Injection. Se mitigan mediante validación de entrada, autenticación segura, y uso de consultas preparadas. |
|
23. ¿Cómo se asegura la seguridad en el desarrollo de microservicios? |
Se asegura mediante la autenticación y autorización entre servicios, cifrado de datos, y monitoreo de comunicaciones. |
|
24. ¿Cómo se realiza la gestión de vulnerabilidades en una aplicación? |
Se realiza mediante la identificación, evaluación, y mitigación de vulnerabilidades mediante parches y actualizaciones. |
|
25. ¿Qué son las mejores prácticas para manejar datos sensibles en aplicaciones? |
Las mejores prácticas incluyen cifrado de datos, almacenamiento seguro, y control de acceso a datos sensibles. |
|
26. ¿Cómo se implementan pruebas de seguridad en una aplicación web? |
Se implementan mediante pruebas de penetración, escaneo de vulnerabilidades y revisiones de seguridad del código. |
|
27. ¿Qué es la gestión de riesgos de seguridad en el desarrollo de software? |
La gestión de riesgos de seguridad implica identificar, evaluar y mitigar los riesgos asociados con la seguridad del software durante el desarrollo. |
|
28. ¿Cómo se asegura la autenticación y autorización en aplicaciones web? |
Se asegura mediante el uso de métodos como autenticación de múltiples factores, gestión de sesiones seguras y control de acceso basado en roles. |
|
29. ¿Qué es el análisis de impacto de seguridad y cómo se aplica? |
El análisis de impacto de seguridad evalúa cómo las modificaciones en el software afectan la seguridad. Se aplica mediante la evaluación de riesgos antes de implementar cambios. |
|
30. ¿Cómo se implementa la seguridad en el desarrollo de APIs REST? |
Se implementa mediante la autenticación, autorización, y validación de entrada, además de cifrar la comunicación. |
|
31. ¿Cómo se manejan las vulnerabilidades de seguridad en bibliotecas y dependencias externas? |
Se manejan mediante la actualización periódica de bibliotecas y el uso de herramientas de escaneo de vulnerabilidades. |
|
32. ¿Qué es la seguridad en la configuración y cómo se aplica? |
La seguridad en la configuración implica asegurar que las configuraciones del software y el entorno sean seguras, como deshabilitar servicios innecesarios y aplicar configuraciones seguras. |
|
33. ¿Cómo se realiza la auditoría de seguridad en aplicaciones? |
Se realiza mediante la revisión de registros de seguridad, pruebas de penetración y análisis de vulnerabilidades. |
|
34. ¿Qué es la "Secure Coding" y cómo se aplica durante el desarrollo? |
"Secure Coding" es la práctica de escribir código con seguridad en mente. Se aplica mediante el uso de técnicas seguras de codificación y la revisión de código. |
|
35. ¿Cómo se maneja la seguridad en el desarrollo de aplicaciones móviles? |
Se maneja mediante el cifrado de datos, autenticación segura y validación de entradas, así como revisiones de seguridad específicas para móviles. |
|