El desenvolupament segur de programari és un conjunt de pràctiques i metodologies que tenen com a objectiu garantir que el programari sigui resistent a vulnerabilitats i atacs de seguretat des del seu disseny fins a la seva implementació i manteniment. Aquest procés implica la integració de mesures de seguretat en totes les fases del cicle de vida del desenvolupament del programari (SDLC).
Objectius del Desenvolupament Segur de Programari
- Prevenir Vulnerabilitats: Identificar i mitigar les vulnerabilitats potencials abans que el programari sigui desplegat.
 - Protegir Dades Sensibles: Assegurar que les dades sensibles estiguin protegides contra accessos no autoritzats.
 - Complir amb Normatives: Assegurar que el programari compleixi amb les normatives i estàndards de seguretat aplicables.
 - Reduir Costos: Minimitzar els costos associats a la correcció de vulnerabilitats descobertes en fases posteriors del desenvolupament.
 
Fases del Desenvolupament Segur de Programari
- Planificació i Requisits
 
- Identificació de Requisits de Seguretat: Definir els requisits de seguretat des del començament del projecte.
 - Anàlisi de Riscos: Realitzar una anàlisi de riscos per identificar possibles amenaces i vulnerabilitats.
 
- Disseny
 
- Arquitectura Segura: Dissenyar una arquitectura que incorpori principis de seguretat com la separació de privilegis i la defensa en profunditat.
 - Modelatge de Amenaces: Identificar i documentar possibles amenaces i vulnerabilitats en el disseny del sistema.
 
- Implementació
 
- Codificació Segura: Utilitzar pràctiques de codificació segura per evitar vulnerabilitats comunes com injeccions SQL, XSS, etc.
 - Revisió de Codi: Realitzar revisions de codi per detectar i corregir vulnerabilitats.
 
- Proves
 
- Proves de Seguretat: Realitzar proves de seguretat com escanejos de vulnerabilitats, proves de penetració i anàlisi estàtica de codi.
 - Validació de Requisits de Seguretat: Assegurar que tots els requisits de seguretat definits en la fase de planificació s'han complert.
 
- Desplegament
 
- Configuració Segura: Assegurar que el programari es desplega amb configuracions segures.
 - Monitorització i Auditoria: Implementar mecanismes de monitorització i auditoria per detectar i respondre a incidents de seguretat.
 
- Manteniment
 
- Actualitzacions i Parches: Aplicar actualitzacions i parches de seguretat de manera regular.
 - Revisió Contínua de Seguretat: Realitzar revisions contínues de seguretat per identificar i corregir noves vulnerabilitats.
 
Pràctiques de Codificació Segura
Validació d'Entrades
- Sanitització d'Entrades: Assegurar que totes les dades d'entrada siguin validades i sanititzades per evitar injeccions i altres atacs.
 - Límits de Dades: Establir límits en la mida i el tipus de dades que es poden introduir.
 
Gestió d'Errors
- Missatges d'Error Segurs: No revelar informació sensible en els missatges d'error.
 - Registre d'Errors: Registrar errors de manera segura per a la seva posterior anàlisi.
 
Autenticació i Autorització
- Autenticació Forta: Utilitzar mètodes d'autenticació forts com l'autenticació multifactor (MFA).
 - Control d'Accés: Implementar controls d'accés basats en rols (RBAC) per limitar l'accés a recursos sensibles.
 
Criptografia
- Encriptació de Dades: Encriptar dades sensibles tant en trànsit com en repòs.
 - Gestió de Claus: Implementar una gestió segura de claus criptogràfiques.
 
Exemple Pràctic: Validació d'Entrades en PHP
<?php
// Funció per sanititzar entrades
function sanitize_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
// Exemple d'ús
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = sanitize_input($_POST["username"]);
    $password = sanitize_input($_POST["password"]);
    
    // Validació addicional
    if (!preg_match("/^[a-zA-Z0-9]*$/", $username)) {
        echo "Nom d'usuari no vàlid";
    } else {
        // Processar dades segures
        echo "Nom d'usuari vàlid";
    }
}
?>Explicació del Codi
- Sanitització: La funció 
sanitize_inputelimina espais en blanc, barres invertides i converteix caràcters especials en entitats HTML per prevenir atacs com XSS. - Validació: Es valida que el nom d'usuari només contingui caràcters alfanumèrics.
 
Exercici Pràctic
Objectiu
Implementar una funció en Python que validi i sanititzi les entrades d'usuari per evitar injeccions SQL.
Instruccions
- Escriu una funció 
sanitize_inputque elimini caràcters perillosos. - Escriu una funció 
validate_usernameque asseguri que el nom d'usuari només contingui caràcters alfanumèrics. 
Codi
import re
def sanitize_input(data):
    data = data.strip()
    data = re.sub(r"[;'\"]", "", data)
    return data
def validate_username(username):
    if re.match("^[a-zA-Z0-9]*$", username):
        return True
    else:
        return False
# Exemple d'ús
username = input("Introdueix el teu nom d'usuari: ")
sanitized_username = sanitize_input(username)
if validate_username(sanitized_username):
    print("Nom d'usuari vàlid")
else:
    print("Nom d'usuari no vàlid")Solució
- Sanitització: La funció 
sanitize_inputelimina espais en blanc i caràcters perillosos com;,', i". - Validació: La funció 
validate_usernameutilitza una expressió regular per assegurar que el nom d'usuari només contingui caràcters alfanumèrics. 
Resum
En aquesta secció, hem après la importància del desenvolupament segur de programari i com integrar mesures de seguretat en totes les fases del cicle de vida del desenvolupament. Hem explorat pràctiques de codificació segura i hem vist exemples pràctics de com implementar aquestes pràctiques en llenguatges de programació com PHP i Python. A més, hem realitzat un exercici pràctic per reforçar els conceptes apresos.
Curs de Ciberseguretat
Mòdul 1: Introducció a la Ciberseguretat
- Conceptes Bàsics de Ciberseguretat
 - Tipus d'Amenaces i Atacs
 - Història i Evolució de la Ciberseguretat
 
Mòdul 2: Fonaments de Seguretat de la Informació
Mòdul 3: Seguretat en Xarxes
- Fonaments de Xarxes
 - Protocols de Seguretat en Xarxes
 - Firewalls i Sistemes de Detecció d'Intrusos (IDS/IPS)
 
Mòdul 4: Seguretat en Sistemes i Aplicacions
- Seguretat en Sistemes Operatius
 - Seguretat en Aplicacions Web
 - Proves de Penetració i Avaluació de Vulnerabilitats
 
Mòdul 5: Gestió d'Incidents i Resposta a Incidents
Mòdul 6: Compliment i Normatives
- Regulacions i Estàndards de Ciberseguretat
 - Polítiques de Seguretat i Governança
 - Auditories i Avaluacions de Compliment
 
Mòdul 7: Tecnologies Emergents i Tendències
- Intel·ligència Artificial i Ciberseguretat
 - Blockchain i Seguretat
 - Internet de les Coses (IoT) i Seguretat
 
