En aquest cas d'estudi, analitzarem una aplicació web fictícia per identificar vulnerabilitats i implementar millores de seguretat. Aquest exercici pràctic ens permetrà aplicar els coneixements adquirits en els mòduls anteriors del curs.
Descripció de l'Aplicació
L'aplicació web que analitzarem és un portal de compres en línia anomenat "ShopSecure". Aquesta aplicació permet als usuaris registrar-se, iniciar sessió, cercar productes, afegir-los al carret de la compra i realitzar pagaments.
Funcionalitats Principals
- Registre d'Usuaris: Els usuaris poden crear un compte proporcionant un nom d'usuari, contrasenya i adreça de correu electrònic.
- Inici de Sessió: Els usuaris poden iniciar sessió amb el seu nom d'usuari i contrasenya.
- Cerca de Productes: Els usuaris poden cercar productes per nom o categoria.
- Carret de la Compra: Els usuaris poden afegir productes al carret de la compra.
- Pagament: Els usuaris poden realitzar pagaments utilitzant targetes de crèdit.
Identificació de Vulnerabilitats
- Injecció SQL
Descripció
L'aplicació és vulnerable a injeccions SQL en el formulari de cerca de productes.
Exemple de Codi Vulnerable
Solució
Utilitzar consultes preparades per evitar la injecció SQL.
Exemple de Codi Segur
- Pèrdua d'Autenticació
Descripció
L'aplicació no implementa mesures adequades per protegir les sessions dels usuaris.
Solució
- Utilitzar tokens de sessió segurs.
- Implementar un temps de caducitat per a les sessions.
- Utilitzar HTTPS per a totes les comunicacions.
- Exposició de Dades Sensibles
Descripció
Les contrasenyes dels usuaris es guarden en text pla a la base de dades.
Solució
- Emmagatzemar les contrasenyes utilitzant un algorisme de hash segur com bcrypt.
Exemple de Codi Segur
- Cross-Site Scripting (XSS)
Descripció
L'aplicació és vulnerable a atacs XSS en el formulari de comentaris dels productes.
Solució
- Escapar correctament les dades d'entrada dels usuaris.
- Utilitzar funcions de sanitització per eliminar codi maliciós.
Exemple de Codi Segur
Implementació de Millores de Seguretat
- Millora de la Gestió d'Autenticació
- Implementar autenticació multifactor (MFA) per a una seguretat addicional.
- Utilitzar llibreries de seguretat provades per gestionar l'autenticació i les sessions.
- Protecció de Dades Sensibles
- Xifrar les dades sensibles com les targetes de crèdit abans de guardar-les a la base de dades.
- Implementar controls d'accés estrictes per assegurar que només els usuaris autoritzats puguin accedir a dades sensibles.
- Millora de la Configuració de Seguretat
- Configurar correctament les capçaleres HTTP per protegir contra atacs comuns com XSS i clickjacking.
- Realitzar auditories de seguretat regulars per identificar i corregir vulnerabilitats.
- Monitoratge i Registre
- Implementar un sistema de registre i monitoratge per detectar activitats sospitoses.
- Configurar alertes per a esdeveniments de seguretat crítics.
Exercici Pràctic
Tasca
- Identifica i corregeix les vulnerabilitats en el codi proporcionat.
- Implementa les millores de seguretat descrites anteriorment.
Codi Inicial
# Exemple de codi vulnerable def search_product(product_name): query = f"SELECT * FROM products WHERE name = '{product_name}'" # Executar la consulta SQL # ... def register_user(username, password, email): # Guardar la contrasenya en text pla query = f"INSERT INTO users (username, password, email) VALUES ('{username}', '{password}', '{email}')" # Executar la consulta SQL # ...
Solució
import bcrypt import sqlite3 def search_product(product_name): conn = sqlite3.connect('shopsecure.db') cursor = conn.cursor() query = "SELECT * FROM products WHERE name = ?" cursor.execute(query, (product_name,)) results = cursor.fetchall() conn.close() return results def register_user(username, password, email): hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()) conn = sqlite3.connect('shopsecure.db') cursor = conn.cursor() query = "INSERT INTO users (username, password, email) VALUES (?, ?, ?)" cursor.execute(query, (username, hashed_password, email)) conn.commit() conn.close()
Conclusió
En aquest cas d'estudi, hem identificat diverses vulnerabilitats en una aplicació web fictícia i hem implementat millores de seguretat per mitigar aquests riscos. Aquest exercici pràctic ens ha permès aplicar els coneixements adquirits sobre seguretat en aplicacions web i OWASP. Recordeu que la seguretat és un procés continu i que és important mantenir-se actualitzat amb les millors pràctiques i noves amenaces.
Curs d'OWASP: Directrius i Estàndards per a la Seguretat en Aplicacions Web
Mòdul 1: Introducció a OWASP
Mòdul 2: Principals Projectes d'OWASP
- OWASP Top Ten
- OWASP ASVS (Application Security Verification Standard)
- OWASP SAMM (Software Assurance Maturity Model)
- OWASP ZAP (Zed Attack Proxy)
Mòdul 3: OWASP Top Ten
- A1: Injecció
- A2: Pèrdua d'Autenticació
- A3: Exposició de Dades Sensibles
- A4: Entitats Externes XML (XXE)
- A5: Control d'Accés Trencat
- A6: Configuració Incorrecta de Seguretat
- A7: Cross-Site Scripting (XSS)
- A8: Deserialització Insegura
- A9: Ús de Components amb Vulnerabilitats Conegudes
- A10: Registre i Monitoratge Insuficients
Mòdul 4: OWASP ASVS (Application Security Verification Standard)
Mòdul 5: OWASP SAMM (Software Assurance Maturity Model)
Mòdul 6: OWASP ZAP (Zed Attack Proxy)
- Introducció a ZAP
- Instal·lació i Configuració
- Escaneig de Vulnerabilitats
- Automatització de Proves de Seguretat
Mòdul 7: Bones Pràctiques i Recomanacions
- Cicle de Vida de Desenvolupament Segur (SDLC)
- Integració de Seguretat en DevOps
- Capacitació i Sensibilització en Seguretat
- Eines i Recursos Addicionals
Mòdul 8: Exercicis Pràctics i Casos d'Estudi
- Exercici 1: Identificació de Vulnerabilitats
- Exercici 2: Implementació de Controls de Seguretat
- Cas d'Estudi 1: Anàlisi d'un Incident de Seguretat
- Cas d'Estudi 2: Millora de la Seguretat en una Aplicació Web